2 路加密图像文件名
2 way crypt image filename
我想用加密字符串更改图像文件名。
我还需要:
- 用相同的密码多次加密原始字符串,将return相同的字符串
- 应该对加密的字符串进行解密(2 路加密)
我可以使用什么 php 方法?
我看到mcrypt已经很多年没有更新了,每次加密时openssl_crypt都会return不同的加密字符串(即使密码相同)。
谢谢
您应该使用分组密码。
我建议 Zend\Crypt\BlockCipher 或 \Sodium\crypto_secretbox
两者都易于正确使用并且有清晰的文档。
和openssl_crypt 返回具有相同数据的不同字符串是安全所必需的。上面的两种方法都会做同样的事情。
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);
quote openssl_crypt will return different encrypted strings each time I encrypt (even if the password is the same).
- 不适用于 AES-192-CBC,只要密码 AND IV 相同即可。我认为这就是首先发明 IV 的原因,以防止相同的数据加密为完全相同的加密形式
我想用加密字符串更改图像文件名。
我还需要:
- 用相同的密码多次加密原始字符串,将return相同的字符串
- 应该对加密的字符串进行解密(2 路加密)
我可以使用什么 php 方法? 我看到mcrypt已经很多年没有更新了,每次加密时openssl_crypt都会return不同的加密字符串(即使密码相同)。
谢谢
您应该使用分组密码。
我建议 Zend\Crypt\BlockCipher 或 \Sodium\crypto_secretbox
两者都易于正确使用并且有清晰的文档。
和openssl_crypt 返回具有相同数据的不同字符串是安全所必需的。上面的两种方法都会做同样的事情。
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);
quote openssl_crypt will return different encrypted strings each time I encrypt (even if the password is the same).
- 不适用于 AES-192-CBC,只要密码 AND IV 相同即可。我认为这就是首先发明 IV 的原因,以防止相同的数据加密为完全相同的加密形式