首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将加密算法mcrypt转换为openssl

将加密算法mcrypt转换为openssl
EN

Stack Overflow用户
提问于 2018-05-31 14:16:48
回答 2查看 1K关注 0票数 1

因为php已经停止了对Mcrypt 7.2和更高版本的支持。我不知道如何将Mcrypt转换为Openssl。我想知道是否有人可以为此提供OpenSSL等效项?需要说明的是,我并不打算支持Mcrypt,所以我必须通过openSSL来解密我的mcrypt加密字符串(密码)。

通过mcrypt->进行编码

代码语言:javascript
运行
复制
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;
}
EN

回答 2

Stack Overflow用户

发布于 2018-05-31 14:37:22

已更新

不幸的是,看起来你没有办法做你想做的事情。如果您使用的是带有256字节密钥的MCRYPT_RIJNDAEL_128模式,可能会有希望。

AES-256和MCRYPT_RIJNDAEL_256加密不是一回事,即使AES基本上是Rijndael。这一切都与块的大小有关。你想做的事情是不兼容的。

您的选择如下:

  • 使用的PHP版本仍然具有MCRYPT库,并将密码解密为文件,然后使用新的加密方法对其进行加密。
  • 提供了一个PECL选项,该选项允许您在最新版本的PHP中安装MCRYPT的伪版本。

对于仅仅加密和解密您的密码,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

祝你好运~

票数 1
EN

Stack Overflow用户

发布于 2018-05-31 14:22:36

当涉及到加密数据时,您有如此多的选择,所以这就是为什么您应该自己实现它。我推荐你的库扩散/php-encryption,详细的教程请看this link

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50617809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档