根据OpenSSL
(https://www.openssl.org/docs/apps/enc.html#OPTIONS)的文档,他们期望and的hex-digit
值;这是否意味着只有数字?或者哈希会做吗?(因为 a似乎不可逆)key
iv
md5
md5
- 注意我提到
key
的是iv
因为$password
在PHP
函数openssl_encrypt
中实际上是关键。
(几乎)直接来自PHP
评论(http://php.net/manual/en/function.openssl-encrypt.php)
function strtohex($x)
{
$s='';
foreach (str_split($x) as $c) $s.=sprintf("%02X",ord($c));
return($s);
}
$source = 'It works !';
$iv = substr( md5( "123sdfsdf4567812345678" ), 0, 16 );
$pass = '1234567812345678';
$method = 'aes-256-cbc';
echo "\niv in hex to use: ".$iv;
echo "\nkey in hex to use: ".strtohex($pass);
echo "\n";
file_put_contents ('./file.encrypted',openssl_encrypt ($source, $method, $pass, true, $iv));
$exec = "openssl enc -".$method." -d -in file.encrypted -nosalt -nopad -K ".strtohex($pass)." -iv ".$iv;
echo 'executing: '.$exec."\n\n";
echo exec ($exec);
echo "\n";