I would like to encrypt and decrypt somes data with AES CCM!
I managed to do this operation in the same php file. But I would like to be able to send the encrypted data to another page to decrypt it with. But impossible ... Yet I send the iv, the tag and the encrypted data. Do you have a solution?
I have these errors:
Warning: openssl_decrypt(): Setting tag for AEAD cipher decryption failed in adddata1.php on line 18
Fatal error: Uncaught Exception: OpenSSL error: error:0607A082:digital envelope routines:EVP_CIPHER_CTX_set_key_length:invalid key length in adddata1.php:21 Stack trace: #0 {main} thrown in dddata1.php on line 21
First file :
$algo = 'aes-128-ccm'; $iv = random_bytes(openssl_cipher_iv_length($algo)); $key = "cd9344040aa9f9217871d46ee871c59c"; $data = '00000000010-3b57af'; $ciphertext = openssl_encrypt( $data, $algo, $key, OPENSSL_RAW_DATA, $iv, $tag ); echo'<a href="adddata1?data='.$ciphertext.'&tag='.$tag.'&iv='.$iv.'">"decrypte"</a>'; ?> Second file :
$algo = 'aes-128-ccm'; $key = "cd9344040aa9f9217871d46ee871c59c"; $ciphertext = $_GET['data']; $iv = $_GET['iv']; $tag = $_GET['tag']; // Change 1 bit in additional authenticated data // $i = rand(0, mb_strlen($aad, '8bit') - 1); // $aad[$i] = $aad[$i] ^ chr(1); $decrypt = openssl_decrypt( $ciphertext, $algo, $key, OPENSSL_RAW_DATA, $iv, $tag ); if (false === $decrypt) { throw new Exception(sprintf( "OpenSSL error: %s", openssl_error_string() )); } printf ("Decryption %s\n", $data === $decrypt ? 'Ok' : 'Failed'); printf("<br/>"); printf(base64_encode($tag)); printf("<br/>"); printf(base64_encode($iv)); printf("<br/>"); printf(base64_encode($ciphertext)); printf("<br/>"); printf($data); ?> In one file :
<?php $algo = 'aes-128-ccm'; $iv = random_bytes(openssl_cipher_iv_length($algo)); $key = "cd9344040aa9f9217871d46ee871c59c"; $data = '00000000010-3b57af'; $ciphertext = openssl_encrypt( $data, $algo, $key, OPENSSL_RAW_DATA, $iv, $tag ); // Change 1 bit in additional authenticated data // $i = rand(0, mb_strlen($aad, '8bit') - 1); // $aad[$i] = $aad[$i] ^ chr(1); $decrypt = openssl_decrypt( $ciphertext, $algo, $key, OPENSSL_RAW_DATA, $iv, $tag ); if (false === $decrypt) { throw new Exception(sprintf( "OpenSSL error: %s", openssl_error_string() )); } printf ("Decryption %s\n", $data === $decrypt ? 'Ok' : 'Failed'); printf("<br/>"); printf(base64_encode($tag)); printf("<br/>"); printf(base64_encode($iv)); printf("<br/>"); printf(base64_encode($ciphertext)); printf("<br/>"); printf($data); ?> Thanks