因为php已经停止了对Mcrypt 7.2和更高版本的支持。我不知道如何将Mcrypt转换为Openssl。我想知道是否有人可以为此提供OpenSSL等效项?需要说明的是,我并不打算支持Mcrypt,所以我必须通过openSSL来解密我的mcrypt加密字符串(密码)。
通过mcrypt->进行编码
static function encode($value= NULL, $key= NULL){
if(!$value){
return false;
}
$text = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
return trim(self::safe_b64encode($crypttext));
}
private function safe_b64encode($string= NULL) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
发布于 2018-05-31 14:37:22
已更新
不幸的是,看起来你没有办法做你想做的事情。如果您使用的是带有256字节密钥的MCRYPT_RIJNDAEL_128模式,可能会有希望。
AES-256和MCRYPT_RIJNDAEL_256加密不是一回事,即使AES基本上是Rijndael。这一切都与块的大小有关。你想做的事情是不兼容的。
您的选择如下:
对于仅仅加密和解密您的密码,OpenSSL应该是可以的,但OpenSSL有限制,特别是当您想要加密大量数据时。它要求您编写额外的代码,在加密之前将数据拆分成较小的块,然后在解密后将其重新组合在一起。
我强烈建议您跳过OpenSSL,学习PHP库,现在最新的LibSodium版本支持这个库。
http://php.net/manual/en/book.sodium.php
这里有一个很好的页面可以让你开始阅读。
https://paragonie.com/blog/2015/05/using-encryption-and-authentication-correctly
更多的利巴纳资源。
https://github.com/paragonie/pecl-libsodium-doc/blob/v1/chapters/01-quick-start.md
祝你好运~
发布于 2018-05-31 14:22:36
当涉及到加密数据时,您有如此多的选择,所以这就是为什么您应该自己实现它。我推荐你的库扩散/php-encryption,详细的教程请看this link。
https://stackoverflow.com/questions/50617809
复制相似问题