Skip to content

Encryption exampleΒΆ

Encryption Example (Shell using OpenSSL):

encrypt_field() {
  echo -n "$1" | openssl pkeyutl -encrypt \
    -pubin -inkey <(echo "$PUBLIC_KEY") \
    -pkeyopt rsa_padding_mode:oaep \
    -pkeyopt rsa_oaep_md:sha256 \
    -pkeyopt rsa_mgf1_md:sha256 | base64
}

# Fetch your key from Merchant details page
PUBLIC_KEY="
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2LViflYT3ggOlCult1JpZveGgr94i1OqZa/Jeghmgj9wPDwUZjiqXIP8+gkBmfMspvzGtoe/aokyJvilNqnaBNKaJLZtb1PXtJHVpTOn+YBR3TLyjca3uLXdpgYtt2w9uWovNUGUVzuBpje2NAVtxIAeTIt7HPFl2ob816IMbULBUB3SSYSw9nQCxw8ejjhbGNJ0asJPdNrtrUlTF5UZobETASfJxh405G7PiOyi1WXuyohyOdYpc96JvnHc59tiWohqx8dYnZT3Ow503oHpAF8mtdJBjJEjXTRVQezc5+lezb1sFVAN8yiM1lJGvKLNj0ILX0qfwOBwpldYAeQU+wIDAQAB
-----END PUBLIC KEY-----"

# usage example:
CARD_NUMBER="4111111111111111"
CVV="123"
EXPIRATION_MONTH="12"
EXPIRATION_YEAR="2026"

ENCRYPTED_CARD_NUMBER=$(encrypt_field "$CARD_NUMBER")
ENCRYPTED_CVV=$(encrypt_field "$CVV")
ENCRYPTED_EXPIRATION_MONTH=$(encrypt_field "$EXPIRATION_MONTH")
ENCRYPTED_EXPIRATION_YEAR=$(encrypt_field "$EXPIRATION_YEAR")
echo "Encrypted Card Number: $ENCRYPTED_CARD_NUMBER" "Encrypted CVV: $ENCRYPTED_CVV" "Encrypted Expiration Month: $ENCRYPTED_EXPIRATION_MONTH" "Encrypted Expiration Year: $ENCRYPTED_EXPIRATION_YEAR"
# Commands above should output something like:
# Encrypted Card Number: jnri5WHspUtTBX9Mn+sHHCTzGylNsPo292zSVNMpQ7V5ErXdiQFKajl25SysopTQxauFcCKdL8rcnsbpKmUuBw6LWZs1M+hsvUkwtE64kedUnaLh6KFNOWc/lq+W0YGYh3GC6VFyRhP/KWnLTK7nQs916wDd6AGka+eOrQpFQV30dT4G1HlhNDcYrN42+MkAfNMi7omCkKbmoIfaRn60ju54rx7rxYmoLAGo1SAzPCJqLlo3hZ99de9frKfsA2unTK1mTpN9fi5y+9aw8HHyL49ulhUto4kFplc0IGt0NjIuwhK1vfx6rhoR5ikU5ErrMt/S9HyWSUfWjZnhqOzfUA==
# Encrypted CVV: qz4IuiWW4az3N2O5rzuCfX39ks9Fr0EqGQO+cfA5APNbw775fy34IXrI+etXFAm/lNEV2IcgWjRzLatoYCVfp2hzSVDoQ4D7+ODnN62R4nmWbU51DS23Wh/zXzw4zLFONCMJO16MAwDxWqO4fPnUT/2MK2ZrYxjAy7dlOdHQ/sIGsOeGDRWQUAToCJzpU5ds2Sic+yrd7EkgubtWbrZblmDnH6EHcN+dsCZjEHjZA8kbTHl43Y8LTn92ZMqJsEhJR2mperydGcwreRWa/USGyR/uqOfUD4Tzx7yXh+jUdA122yZ5GfhI5/x+i2XbyI39YDR1A9IsemnUEHOcsh/JqA==
# Encrypted Expiration Month: me/39rmiF9HtKddQDUWT1o9c1hLpUjlXnC/hx2yoYwfFCTLgsTrafvF37bZ2V545ZN2K1/bwpXkHhBdSWrVRpJkjVLSOcBWxaPoNesXkI5K1MgVAEwRZs5UEtPrEiO1xykmTL7PBVG6W7Abs3zllI/KHOkkupyOGmbMo7VVRduzNX+wv4pqZaDqxrbDJyxOudZ3Gq0ob3Ae20ajsoOjJ6AMn6UeZamRl1iu874B8BK55eMht1f0tBSeNTSn8jPRsufFgnWerh6NvdbhRxXFqv3fgemE8rEqHj27By2TfgjrXilpDZ/5zLwGAbScdPmwz4okzW2qN5PuC/VYRfcCd6w==
# Encrypted Expiration Year: 0FAczwN40r5yZ5XnW5OJZK1YlgWVb8rt842Hab8MLh3V+bek6iLkKvN4l36ud98nj/i98Fh1raCIH4k7oLbDmSzkHzSyoQD0M3/xm4AuyBVl0Owdir9O83mlRnVES5CJ789Ch2ap8derF8zUKlMJWsqLrz92dM/I4qfj3s+xulD8RFxRSAjUXDqCH6ugHpm2yu3F3ylu9FekrIuI7LqHwFWPN+lJmFuLoUhEjjId6aED/jF/qEsj5siQ1Qod1k5bl2lwUDwhj1P1VWp9Bb84k8gNBOEMsnIgq6poYV/YsHzX/W/gmQZyFhkX8CtHL463JBTiz8aj1vyhEmjSO/syLQ==