zoukankan      html  css  js  c++  java
  • php利用自定义key,对数据加解密的方法

      客户端和服务端通信时,有个场景很常见,通过一个id作为url参数来回传递。假设现在业务上只有这个id标识,那么需要稍微安全一点的通信,对这个id进行加密传输,到服务端再进行解密。这里需要一个服务端进行保密的key,利用这个key进行加密和解密。

      加解密的方法如下:$str是需要加解密的字符串,$key是自己定义的一个key  

    // 加密
    function encryptStr($str, $key){
        $block = mcrypt_get_block_size('des', 'ecb');
        $pad = $block - (strlen($str) % $block);
        $str .= str_repeat(chr($pad), $pad);
        $enc_str = mcrypt_encrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
        return base64_encode($enc_str);
    }
    
    
    // 解密
    function decryptStr($str, $key){
        $str = base64_decode($str);
        $str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
        $block = mcrypt_get_block_size('des', 'ecb');
        $pad = ord($str[($len = strlen($str)) - 1]);
        return substr($str, 0, strlen($str) - $pad);
    }

    值得一提的是:

    如果说应用到url中id的这个场景,那么加密过后,是base64的编码,建议再urlencode()下,去除+号的影响。

  • 相关阅读:
    c# 自定义位数生成激活码
    接口interface和抽象类型abstract
    winform自动升级方案
    泛型介绍
    泛型约束形式
    登录状态保持Session/Cookie
    EFCore 2.0引用标量函数
    .net生成条形码
    通用手机号、身份证号等隐藏显示方法
    .net core api Post请求
  • 原文地址:https://www.cnblogs.com/firstForEver/p/5747065.html
Copyright © 2011-2022 走看看