【发布时间】:2016-04-22 11:30:21
【问题描述】:
我正在用 PHP 加密密码,并想在不同的盒子上解密它。我没有运气,我希望能够直接从 bash 解密并回显它。下面是一个 PHP 测试的 sn-p。
$textToEncrypt = "My super secret information.";
$encryptionMethod = "AES-256-CBC";
$secretHash = "Testkey";
//To encrypt
$encryptedMessage = openssl_encrypt($textToEncrypt, $encryptionMethod, $secretHash);
//To Decrypt
$decryptedMessage = openssl_decrypt($encryptedMessage, $encryptionMethod, $secretHash);
//Result
echo "Encrypted: $encryptedMessage <br>Decrypted: $decryptedMessage";
我已经尝试了多种方法在 Ubuntu 上对其进行解密,甚至将数据存储到文件中并将其输出到文件中。尝试的命令是:
openssl aes-256-cbc -a -d -k Testkey -in foo.txt -out secrets.txt
其中foo.txt是PHP加密返回的值,secrets.txt是输出。我该怎么做?
【问题讨论】:
-
不使用初始化向量 (iv) 不是一个好主意;也许它不起作用,因为它害怕。
-
如果我添加了这个,我的 php 会是什么样子,我认为它在 php 和 bash 之间是如何格式化的。
-
-k Testkey将从密码Testkey中派生出一个密钥,而在php 中openssl_encrypt(...,..., ' Testkey')将直接使用Testkey作为密钥。是否真的有必要以这种方式(即a)直接使用openssl命令行工具b)直接,中间没有另一个程序/脚本)? -
我不一定需要直接在命令行中运行它,我希望是从我的数据库中读取这个密钥并通过bash脚本解密它,因此需要任何工具来这样做,我很乐意答应。我只是认为通过 shell 的命令很容易,但我错了。如果任何其他工具也能做到这一点,请告诉我!
-
a) 命令行工具也可以是 php 脚本吗?可能是
#!/bin/phpshebang? b) 你不关心文件格式,只要它可以工作并且不是很糟糕?
标签: php bash encryption openssl