为了账号安全,请及时绑定邮箱和手机立即绑定

用OpenSSL取代Mcrypt

用OpenSSL取代Mcrypt

PHP
慕丝7291255 2019-08-28 13:46:21
用OpenSSL取代Mcrypt目前我们在我们的系统上有一个mcrypt实现,用于在PHP应用程序中隐藏一些敏感数据。现在我们有了一个新的要求,我们必须将crypt模块更改为openssl。另一件重要的事情是我们使用密码河豚和模式ecb。所以我开始测试有什么区别以及如何使用openssl解密mcrypt加密字符串。我使用标准的PHP函数:mcrypt_encrypt与openssl_encryptmcrypt_decrypt与openssl_decrypt两种方法都会产生不同的结果。第二件事是在两种类型的给定密码(河豚)和模式(ecb)中需要不同的IV长度(openssl = 0和mcrypt = 56)。有没有人知道如何在没有大量迁移工作的情况下轻松更改模块?提前致谢!更新:这是代码,我测试了它:<?php  function say($message){     if(!is_string($message)){         if(!isset($_SERVER["HTTP_USER_AGENT"])) echo "<pre>";         echo var_export($message, true) . ((!isset($_SERVER["HTTP_USER_AGENT"]) ? "\n" : "<br />"));         if(!isset($_SERVER["HTTP_USER_AGENT"])) echo "</pre>";     }else{         echo $message . ((!isset($_SERVER["HTTP_USER_AGENT"]) ? "\n" : "<br />"));     }}say("= Begin raw encryption");$key    = "anotherpass";$str    = "does it work";say("  Params:");say("  - String to encrypt '".$str."'");say("  - Key: ".$key);say("");$params = array(     "openssl"  => array(         "cipher"    => "BF",         "mode"      => "ECB",     ),     "mcrypt" => array(         "cipher"    => "blowfish",          "mode"      => "ecb",     ),);这是我的结果:= Begin raw encryption  Params:   - String to encrypt 'does it work'   - Key: anotherpass= Mcrypt   Params:   - InitVector   06a184909d7bf863 (bin2hex)   - Max keysize  56   - Cipher       blowfish  - Mode         ecb  Encryption:   - Encrypted   0e93dce9a6a88e343fe5f90d1307684c (bin2hex)   - Descrypted  does it work= Openssl   Params:   - InitVector   not needed  - Max keysize  0   - Cipher       BF  - Mode         ECB  Encryption:   - Encrypted   213460aade8f9c14d8d51947b8231439 (bin2hex)   - Descrypted  does it work也许现在有什么想法?谢谢!
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 490 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信