2路crypt图像文件名

时间:2017-02-04 00:21:46

标签: php encryption mcrypt php-openssl

我想用加密字符串更改图像文件名。

我还需要:

  • 使用相同的密码多次加密原始字符串,将返回相同的字符串
  • 加密字符串应该被解密(双向加密)

我可以使用什么php方法? 我看到mcrypt多年没有更新,每次加密时openssl_crypt都会返回不同的加密字符串(即使密码相同)。

由于

2 个答案:

答案 0 :(得分:0)

您应该使用分组密码。

我建议使用Zend \ Crypt \ BlockCipher或\ Sodium \ crypto_secretbox

两者都易于正确使用并且具有清晰的文档。

并且openssl_crypt返回具有相同数据的不同字符串是安全性所必需的。上述两种方法都是一样的。

答案 1 :(得分:0)

openssl_encrypt& co应该没问题。例如:

<?php
$data='foo.jpg';
$method='AES-192-CBC';
$password='ogiughjklpdeorivjrhfnd';
$iv=base64_encode(random_bytes(10));
$encrypted=array();
for($i=0;$i<10;++$i){
    $encrypted[]=openssl_encrypt($data,$method,$password,0,$iv );
}
$decrypted=openssl_decrypt ($encrypted[0] ,$method ,$password,0,$iv);

var_dump($data,$encrypted[0],$decrypted,$data===$decrypted,$encrypted[2]===$encrypted[7],$encrypted);

引用openssl_crypt will return different encrypted strings each time I encrypt (even if the password is the same). - 不使用AES-192-CBC,只要密码AND IV相同即可。我认为这就是为什么IV首先被发明,以防止相同的数据加密到完全相同的加密形式