[英]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.