openssl_encrypt& AES256

时间:2018-03-11 22:44:22

标签: php aes php-openssl

也许有人知道PHP上的这个怎么做

  回声" TEST" | openssl enc -e -aes-256-cbc -k 123456 -a -md md5

我会尝试

$iv = openssl_random_pseudo_bytes(16);
$data = base64_encode(openssl_encrypt('TEST', 'aes-256-cbc', $password, OPENSSL_RAW_DATA, $iv));

但没有成功..

1 个答案:

答案 0 :(得分:0)

有趣的是,就像https://linux.die.net/man/1/enc处的版本一样,我本地openssl安装的手册页列出了'-md'(没有参数)作为openssl enc的选项 - 但似乎没有解释它的用途。 openssl wiki表示它用于密钥派生。

进一步挖掘,我发现this on the SO cryptography site

但是在尝试编写实现之前,由于openssl的实现有些深奥,所以它更倾向于在实现中是否需要专门支持这个实现?如果您只需要一种加密/解密网站外数据的方法,您可以编写一个命令行PHP脚本。

快速阅读链接文档,建议......

  $data = base64_encode(openssl_encrypt('TEST', 'aes-256-cbc', md5($password, true), OPENSSL_RAW_DATA, $iv));

但我希望openssl对派生函数中的键执行其他操作,将16个字节填充到所需的128位(为什么要为256位算法强制使用128位密钥?)

相关问题