zoukankan      html  css  js  c++  java
  • php的mcrypt加密步骤过程

    php 的 mcrypt 加密,想使用对称算法,解决小块内容(比如 url、post)网上传输的安全性。即加密、解密用同一个密码。官方文档有个非常完整的演示功能的例子,大概顺序是:

    • 打开 module: mcrypt_module_open()
    • 生成 IV: mcrypt_get_iv_size() -> mcrypt_create_iv()
    • 得到 key/密钥/密码: 
    • 初始化(引擎?): mcrypt_generic_init()
    • 进行加密操作: mcrypt_generic()
    • 关闭(引擎?): mcrypt_generic_end()
    • 重新初始化(引擎?): mcrypt_generic_init()
    • 进行解密操作: mdecrypt_generic() 
    • 关闭(引擎?): mcrypt_generic_end()
    • 关闭 module : mcrypt_module_close()

    代码示例

    <?php
    
    function my_encrypt($string) {
     $key = 'supersecret';
     $key = md5($key);
     //指定初始化向量iv的大小:
     $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
     //创建初始化向量:
     $iv      = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    
     /* Open module, trim key to max length */
     $td = mcrypt_module_open('twofish','','ecb', '');
     $key = substr($key, 0,mcrypt_enc_get_key_size($td));
    
     /* Initialize encryption handle
      *
      */
     if (mcrypt_generic_init($td, $key, $iv) != -1) {
      /* Encrypt data */
      $c_t = mcrypt_generic($td, $string);
      mcrypt_generic_end($td);
      mcrypt_module_close($td);
      return $c_t;
     } //end if
    }
    
    function my_decrypt($string) {
    $key = 'supersecret';
    $key = md5($key);
    //指定初始化向量iv的大小:
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    //创建初始化向量:
    $iv      = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    
    /* Open module, trim key to max length */
    $td = mcrypt_module_open('twofish','','ecb', '');
    $key = substr($key, 0,mcrypt_enc_get_key_size($td));
    
    /* Initialize encryption handle
    * (use blank IV)
    */
    if (mcrypt_generic_init($td, $key, $iv) !=-1) {
    
    /* Encrypt data */
    $c_t = mdecrypt_generic($td, $string);
    mcrypt_generic_end($td);
    mcrypt_module_close($td);
    return trim($c_t); //trim to remove
    //padding
    } //end if
    }
  • 相关阅读:
    谈谈 OC 中的内联函数
    Spring 新手教程(二) 生命周期和作用域
    实时竞价(RTB) 介绍(基础篇)
    oracle数据库性能优化方案精髓整理收集回想
    HNU 13411 Reverse a Road II(最大流+BFS)经典
    CSS3主要知识点复习总结+HTML5新增标签
    修改默认MYSQL数据库data存放位置
    mysql状态查看 QPS/TPS/缓存命中率查看
    Mysql5.7.10新加用户
    很靠谱linux常用命令
  • 原文地址:https://www.cnblogs.com/kennyhr/p/3436041.html
Copyright © 2011-2022 走看看