Here is the equivalent php implementation with compatible arguments for the pbkdf2 key derivation
cheers,Code:<?php const CIPHER = "AES-256-CTR"; const KEYLEN = 32; const IVLEN = 16; const KDF_SALTLEN = 8; const KDF_ITER = 10000; const KDF_HASH = "SHA512"; const OPENSSL_MAGIC = "Salted__"; const OPENSSL_MAGICLEN = 8; function AesEncryptString($text, $password) { $salt = openssl_random_pseudo_bytes(KDF_SALTLEN); $derived = openssl_pbkdf2($password, $salt, KEYLEN + IVLEN, KDF_ITER, KDF_HASH); $encr = openssl_encrypt($text, CIPHER, substr($derived, 0, KEYLEN), OPENSSL_RAW_DATA, substr($derived, KEYLEN, IVLEN)); return base64_encode(OPENSSL_MAGIC . $salt . $encr); } function AesDecryptString($encr, $password) { $encr = base64_decode($encr); $salt = ""; if (substr($encr, 0, OPENSSL_MAGICLEN) == OPENSSL_MAGIC) { $salt = substr($encr, OPENSSL_MAGICLEN, KDF_SALTLEN); $encr = substr($encr, OPENSSL_MAGICLEN + KDF_SALTLEN); } $derived = openssl_pbkdf2($password, $salt, KEYLEN + IVLEN, KDF_ITER, KDF_HASH); return openssl_decrypt($encr, CIPHER, substr($derived, 0, KEYLEN), OPENSSL_RAW_DATA, substr($derived, KEYLEN, IVLEN)); } $encr = AesEncryptString("this is a PHP test това е проба", "password123"); echo $encr . "\n"; echo AesDecryptString($encr, "password123") . "\n"; ?>
</wqw>




Reply With Quote