zoukankan      html  css  js  c++  java
  • 小程序 mcrypt加密拓展在php7.1 废弃 使用openssl替代方案

    原加密方法 使用mcrypt

    //获得16位随机字符串,填充到明文之前
    $random = $this->getRandomStr();
    $text = $random . pack("N", strlen($text)) . $text . $appid;
    $iv = substr($this->key, 0, 16);
    
    $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
    $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
    
    //使用自定义的填充方式对明文进行补位填充
    $pkc_encoder = new PKCS7Encoder;
    $text = $pkc_encoder->encode($text);
    mcrypt_generic_init($module, $this->key, $iv);
    //加密
    $encrypted = mcrypt_generic($module, $text);
    mcrypt_generic_deinit($module);
    mcrypt_module_close($module);

     新加密方法 使用openssl

    //获得16位随机字符串,填充到明文之前
    $random = $this->getRandomStr();
    $text = $random . pack("N", strlen($text)) . $text . $appid;
    $iv = substr($this->key, 0, 16);
    
    $encrypted = openssl_encrypt($text, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv); 

    原解密方法 使用mcrypt

    $ciphertext_dec = base64_decode($encrypted);
    $iv = substr($this->key, 0, 16);
    
    $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
    mcrypt_generic_init($module, $this->key, $iv);
    
    //解密
    $decrypted = mdecrypt_generic($module, $ciphertext_dec);
    mcrypt_generic_deinit($module);
    mcrypt_module_close($module);

     新加密方法 使用openssl

    $ciphertext_dec = base64_decode($encrypted);
    $iv = substr($this->key, 0, 16);
    
    $decrypted = openssl_decrypt($ciphertext_dec, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv); 
  • 相关阅读:
    Shell基础:变量类型 & 运算符
    Ant基础入门
    Shell基础:Shell和Mysql交互
    Linux配置邮箱发送(MUTT/MSMTPQ)
    [转载]JMeter源码导入Eclipse
    [转载]Badboy使用教程
    工程目录 Java/Web/Maven
    Maven基础知识和环境搭建
    Github/Eclipse管理Maven项目
    Git分支管理详解
  • 原文地址:https://www.cnblogs.com/zjhblogs/p/9467948.html
Copyright © 2011-2022 走看看