wechat和PHP進行DES加解密統一


WECHAT小程序


引入crypto-js包
var CryptoJS = require('../../crypto/crypto-js.js');
 
onLoad: function (options) {

  var keyHex = CryptoJS.enc.Utf8.parse("wechat");
  var data = '試試能不能解'
  console.log("原始字符串:" + data);
    
  var encrypted = CryptoJS.DES.encrypt(data, keyHex,{
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });

  var encryptData = encrypted.toString();

  console.log("加密之後的結果:" + encryptData);


  var decrypted = CryptoJS.DES.decrypt({ ciphertext: 
    CryptoJS.enc.Base64.parse(encryptData) }, keyHex,{
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });

  var decryptedData = decrypted.toString(CryptoJS.enc.Utf8);
  console.log("解密之後的結果:" + decryptedData);

}













PHP:


	function myDecrypt($data){//解密
		     $key = "wechat";
			 $decrypted= mcrypt_decrypt(
				 MCRYPT_DES,
				 $key,
				 base64_decode($data),
				 MCRYPT_MODE_ECB
				 );
			 $dec_s = strlen($decrypted);
			 $padding = ord($decrypted[$dec_s-1]);
			 $decrypted = substr($decrypted, 0, -$padding);
			 return $decrypted;
	}


	function myEncrypt($data){//加密
		    //初始向量
             $key = "wechat";
			 $encrypted= mcrypt_encrypt(
				 MCRYPT_DES,
				 $key,
				 PaddingPKCS7($data),
				 MCRYPT_MODE_ECB
			 );
			 return base64_encode($encrypted);
    }


	function PaddingPKCS7($data) {
        $block_size = mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_ECB);
        $padding_char = $block_size - (strlen($data) % $block_size);
        $data .= str_repeat(chr($padding_char),$padding_char);
        return $data;
    }




   $conent= myEncrypt('試試能不能解');
   echo "加密測試:【".$conent."】";
   $str_decrypt=myDecrypt($conent);
   echo "還原[".$str_decrypt."]";

 

 

工具包下載:

https://download.csdn.net/download/thl331860203/11961203

發佈了131 篇原創文章 · 獲贊 44 · 訪問量 101萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章