The parameters and their order to be used for the hash algorithmare as follows.merchant_key customer_number card_token app_secret
#!/usr/bin/env bash
generate_hash_key() {
local merchant_key="$1"
local customer_number="$2"
local card_token="$3"
local app_secret="$4"
local data="${merchant_key}|${customer_number}|${card_token}"
local iv
iv=$(openssl rand -hex 16 | openssl sha1 | awk '{print $2}' | cut -c1-16)
local password
password=$(printf "%s" "$app_secret" | openssl sha1 | awk '{print $2}')
local salt
salt=$(openssl rand -hex 16 | openssl sha1 | awk '{print $2}' | cut -c1-4)
local key
key=$(printf "%s" "${password}${salt}" | openssl sha256 | awk '{print $2}' | cut -c1-32)
local key_hex
key_hex=$(printf "%s" "$key" | xxd -p -c 256)
local iv_hex
iv_hex=$(printf "%s" "$iv" | xxd -p -c 256)
local encrypted_base64
encrypted_base64=$(printf "%s" "$data" | openssl enc -aes-256-cbc -K "$key_hex" -iv "$iv_hex" -base64)
local result="${iv}:${salt}:${encrypted_base64}"
result="${result//\//__}"
echo "$result"
}
print_result=$(generate_hash_key "123456789" "CUST001" "card_abc123xyz" "mySecretKey123")
echo "$print_result"{
"status_code": 100,
"status_description": "The card token saved successfully",
"card_token": "ad89a1169c075a21a4b2f5e30691539c"
}