AES Encrypt & Decrypt

AES Encrypt & Decrypt

On11th Jun 2019, 2024-12-20T09:28:43+05:30 ByKarthik Kumar D K | read
Listen Pause Resume Stop

Advanced Encryption Standard, where we use AES-256 to encrypt the data with Cipher. Encrypt & Decrypt approach taken is 'Cipher Block Chaining' method 'AES-256-CBC'.

AES Encrypt

  • We would have the 'Secret' stored in a file which is other than the web root.
 $key = hash('sha256', $secret, true);
  • Hash the 'Secret' with sha256, this gives you the 'Key' which will be used to openssl encrypt.
  • And Generate the pseudo random bytes as 'IV', so that it would be used during encryption and also be attached to the encrypted data.
 $iv = openssl_random_pseudo_bytes(16);
  • Now encrypt the 'String' with openssl encrypt by passing the 'AES-256-CBC' method, 'Key' and 'IV'
 $ciphertext = openssl_encrypt($plaintext, $method, $key, OPENSSL_RAW_DATA, $iv);
  • 'openssl_encrypt' will Encrypt given data with given method and key, returns a raw or base64 encoded string.
  • 'Hash' the returned 'Cipher' text with sha256 hmac method
 $hash = hash_hmac('sha256', $ciphertext, $key, true);
  • Now concatenate the 'IV' & 'Hash' & 'Cipher' and store in the DB as the encrypted value.

AES Decrypt

  • Hash the 'Secret' with sha256, this gives you the 'Key' which will be used to openssl encrypt.
 $key = hash('sha256', $password, true);
  • Explode the concatenated string to 'IV' & 'Hash' & 'Cipher'
 $iv = substr($ivHashCiphertext, 0, 16);$hash = substr($ivHashCiphertext, 16, 32);$ciphertext = substr($ivHashCiphertext, 48);
  • 'openssl_decrypt' will take a raw or base64 encoded string and decrypts it using a given method and key.
  • Now decrypt the 'Cipher' with 'AES-256-CBC' method, 'Key' and 'IV'
 openssl_decrypt($ciphertext, $method, $key, OPENSSL_RAW_DATA, $iv);
  • Return the decrypted 'String'. it is ok, or do i need to change it to excel.

Thanks for reading the article, for more drupal related articles read and subscribe to peoples blog articles.

Labels


Related Articles

Recent Articles

Recent Quick Read

Recent Great People

We Need Your Consent
By clicking “Accept Cookies”, you agree to the storing of cookies on your device to enhance your site navigation experience.
I Accept Cookies