也许有人知道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));
但没有成功..
答案 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位密钥?)