[英]AES encryption using phpseclib
有人可以幫助我進行AES嗎? 我已經在加密和解密數據中使用了phpseclib,但是,它似乎無法解密數據。 請參閱下面的代碼。 我想解密其他頁面上的數據。 提前致謝!
$base64 = "AAA";
$cipher = new Crypt_AES();
$cipher->setKey('QrzMwvH7zmVn5Kzu%ks8GSTWzyLJu#Ck!^f%-UpXefuYBhv^%qLwYsuPx0d&zmNo');
$cipher->setIV(crypt_random_string($cipher->getBlockLength() >> 3));
echo $encrypted = $cipher->encrypt($base64);
$cipher = new Crypt_AES();
$cipher->setKey('QrzMwvH7zmVn5Kzu%ks8GSTWzyLJu#Ck!^f%-UpXefuYBhv^%qLwYsuPx0d&zmNo');
$cipher->setIV(crypt_random_string($cipher->getBlockLength() >> 3));
echo 'decrypted:'. $cipher->decrypt($encrypted);
結果
% NK y 0 k :解密:
更新:
這是否意味着有必要保留一個初始化向量列表以便解密數據?
更新:
我決定使用Lumen Framework。 流明具有內置的加密功能,可處理IV和其他加密技術內容。 謝謝你的幫助!
在兩種情況下,您都使用不同的IV-您需要使用相同的IV。 嘗試這個:
$base64 = "AAA";
$iv = crypt_random_string($cipher->getBlockLength() >> 3);
$cipher = new Crypt_AES();
$cipher->setKey('QrzMwvH7zmVn5Kzu%ks8GSTWzyLJu#Ck!^f%-UpXefuYBhv^%qLwYsuPx0d&zmNo');
$cipher->setIV($iv);
echo $encrypted = $cipher->encrypt($base64);
$cipher = new Crypt_AES();
$cipher->setKey('QrzMwvH7zmVn5Kzu%ks8GSTWzyLJu#Ck!^f%-UpXefuYBhv^%qLwYsuPx0d&zmNo');
$cipher->setIV($iv);
echo 'decrypted:'. $cipher->decrypt($encrypted);
使用隨機生成的IV進行加密。 IV不需要是秘密的,因此只需在IV前面加上加密數據即可。 然后,IV可用於解密。
加密密鑰'QrzMwvH7zmVn5Kzu%ks8GSTWzyLJu#Ck!^f%-UpXefuYBhv^%qLwYsuPx0d&zmNo'
為512位(64字節),但是只有三種AES密鑰大小:128、192和256位。
您正在使用一個庫。 為什么不使用openssl_encrypt()
?
對於加密:
openssl_encrypt($text, $method, $key);
參數:
$text
:您要加密的文本。 $method
:用於加密的方法。 我主要使用AES-256-ECB
。 $key
:用於加密的密鑰。 例:
$data = openssl_encrypt('Hello', 'AES-256-ECB' 'test');
解密:
openssl_decrypt($encrypted_text, $method, $key);
參數:
$encrypted_text
: $encrypted_text
的文本。 $method
:用於解密的方法。 $key
:解密文本的密鑰。 例:
openssl_decrypt($data, 'AES-256-ECB', 'test');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.