3DES加密解密

    //3des加密 OPENSSL_RAW_DATA 为Pkcs7填充模式
    static function des_encrypt($data,$key = ENCRYPT_KEY, $iv = ENCRYPT_IV)
    {
      
      $key  = md5($key);        //32位长度
      $iv   = substr(md5($iv),0,8);   //取前8位
      $str  = openssl_encrypt($data, 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, $iv);
      return base64_encode($str);
     
    }
    //3des解密  OPENSSL_RAW_DATA 为Pkcs7填充模式
    static function des_decrypt($data,$key = ENCRYPT_KEY, $iv = ENCRYPT_IV)
    {
      $data = base64_decode($data);
      $key  = md5($key);        //32位长度
      $iv   = substr(md5($iv),0,8);   //取前8位
      $str  = openssl_decrypt($data, 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, $iv);
      return ($str);
     
    }
    // 生成32位随机数;
    static function generate_key( $length = 32 ) { 
      // 密码字符集,可任意添加你需要的字符 
      $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; 
      $password = ”; 
      for ( $i = 0; $i < $length; $i++ ) 
      { 
      // 这里提供两种字符获取方式 
      // 第一种是使用 substr 截取$chars中的任意一位字符; 
      // 第二种是取字符数组 $chars 的任意元素 
      // $password .= substr($chars, mt_rand(0, strlen($chars) – 1), 1); 
      $password .= $chars[ mt_rand(0, strlen($chars) - 1) ]; 
      } 
      return $password; 
    }

客户端使用CryptoJS加密解密

import CryptoJS from 'crypto-js';

Vue.prototype.des_encrypt = function (str,key,iv){
	var key			= CryptoJS.MD5(key).toString();
	var iv			= CryptoJS.MD5(iv).toString();
	var crypto_key 	= CryptoJS.enc.Utf8.parse(key);
	var crypto_iv 	= CryptoJS.enc.Utf8.parse(iv.substr(0,8));
	var encode_str 	= CryptoJS.TripleDES.encrypt(str, crypto_key, {    
						iv: 		crypto_iv,    
						mode: 		CryptoJS.mode.CBC,    
						padding: 	CryptoJS.pad.Pkcs7
					});
	return encode_str.toString();

}

调用
加密

that.des_encrypt('你好!!!!','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA','1234567812345678')

解密


that.des_decrypt('密文','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA','1234567812345678')
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值