阅读 245

JS加解密

JS加解密

本地引入<br><br>CryptoJS.min.js(网盘Tool下)
 
<!--或者CDN-->
1
<em id="__mceDel"><script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script></em>

  

复制代码

// ****************************// JS 对称加密算法let pwd = CryptoJS.enc.Utf8.parse("666666"); // 解析明文let key = CryptoJS.enc.Utf8.parse("abcd1234"); // 解析秘钥let iv = CryptoJS.enc.Utf8.parse("666666"); // 解析偏移向量, CBC模式下用到, ECB模式不用// JS AES CBC模式 加密let ciphertext = CryptoJS.AES.encrypt(pwd, key, {
        mode: CryptoJS.mode.CBC,  // 加密模式
        padding: CryptoJS.pad.Pkcs7,  // 填充方式
        iv: iv  // 偏移向量}).toString();

console.log(ciphertext)// ciphertext结果为:p0h2lUuOAh4tmEN7FTLq8w==, base64的形式// JS AES CBC模式 解密, 必须为base64格式才能解密,如果为16进制,需要先转为base64let key = CryptoJS.enc.Utf8.parse("abcd1234"); // 解析秘钥let iv = CryptoJS.enc.Utf8.parse("666666"); // 解析偏移向量, CBC模式下用到, ECB模式不用let ciphertexts = CryptoJS.AES.decrypt("p0h2lUuOAh4tmEN7FTLq8w==", key, {
        mode: CryptoJS.mode.CBC,  // 加密模式
        padding: CryptoJS.pad.Pkcs7,  // 填充方式
        iv: iv  // 偏移向量}).toString(CryptoJS.enc.Utf8);

console.log(ciphertexts)// ****************************

复制代码

复制代码

// ****************************// JS DES ECB模式 加密function encryptByDES(message, key){
     let keyHex = CryptoJS.enc.Utf8.parse(key);
     let encrypted = CryptoJS.DES.encrypt(message, keyHex, {
            mode: CryptoJS.mode.ECB,
            padding: CryptoJS.pad.Pkcs7
     });     return encrypted.ciphertext.toString();
}// JS DES ECB模式 解密function decryptByDES(ciphertext, key){
     let keyHex = CryptoJS.enc.Utf8.parse(key);
     let decrypted = CryptoJS.DES.decrypt({
            ciphertext: CryptoJS.enc.Hex.parse(ciphertext)
     }, keyHex, {
            mode: CryptoJS.mode.ECB,
            padding: CryptoJS.pad.Pkcs7
     });
      let result_value = decrypted.toString(CryptoJS.enc.Utf8);      return result_value;
}
let message = '18616563858';//需要加密的数据let key = 'pptv';//加密key// JS DES 加密desMessage = encryptByDES(message, key);
console.log(desMessage);// JS DES 解密message = decryptByDES(desMessage,key)
console.log(message);// ****************************

复制代码

复制代码

// ****************************// JS ECB模式 加密var key = "abcd1234"let ckey = CryptoJS.enc.Utf8.parse(key)
let encrypted = CryptoJS.AES.encrypt("TFT2020@ASX", ckey, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
  });
let hexstr = encrypted.ciphertext.toString()
console.log(hexstr); // 返回hex格式的密文// PHP 解密$mes = hex2bin("4b5bc2f487e7b081d1188beb4f0deb38");
$res = openssl_decrypt($mes, 'AES-128-ECB', "1234567890123456", OPENSSL_RAW_DATA);
echo $res; //输出admin
 // ****************************

复制代码

复制代码

// ****************************var key = "abcd1234"let string = "TFT2020SAC%&#"let ivstr = "123456"
 let KeyHex = CryptoJS.enc.Utf8.parse(key)
let encrypted = CryptoJS.DES.encrypt(string,
        KeyHex, {
          mode: CryptoJS.mode.CBC,  // ecb模式不需要偏移量          padding: CryptoJS.pad.Pkcs7,
          iv: CryptoJS.enc.Utf8.parse(ivstr)
  });
let hexstr = encrypted.ciphertext.toString() // 返回hex格式的密文console.log(hexstr)// PHP解密$mes = hex2bin(hexstr);
$res = openssl_decrypt($mes, 'DES-CBC', "abcd1234", OPENSSL_RAW_DATA, "123456");
echo $res; //输出TFT2020SAC%&#// ****************************

复制代码

复制代码

// ****************************// PHP AES加密$key = '1234567890123456'; //密钥,前后端双方事先约定好$iv = '12345678'; //偏移量,前后端双方事先约定好,ecb模式不需要此参数$message = "TFT202@S$%A";
$aes = openssl_encrypt($message, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
$rs = bin2hex($aes);
var_dump($rs);    
// JS AES解密let ckey = CryptoJS.enc.Utf8.parse("1234567890123456"); 
let ciphertext = CryptoJS.enc.Hex.parse("b9e1cab6e983ca5f0cc2f85e3df8de3b");
let srcs = CryptoJS.enc.Base64.stringify(ciphertext);
let decrypt = CryptoJS.AES.decrypt(srcs, ckey, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
  });
let decrypted = decrypt.toString(CryptoJS.enc.Utf8);
console.log(decrypted.toString(CryptoJS.enc.Utf8));// ****************************

复制代码

复制代码

// ****************************// PHP DES加密$des = openssl_encrypt($message, 'DES-CBC', $key, OPENSSL_RAW_DATA, $iv);
$rs = bin2hex($des);
var_dump($rs);    
// JS DES解密let keyHex = CryptoJS.enc.Utf8.parse("1234567890123456")
let decrypted = CryptoJS.DES.decrypt({
    ciphertext: CryptoJS.enc.Hex.parse("7e001ef45efe287715a7f826fd9c9d46")
    }, keyHex, {
        iv: CryptoJS.enc.Utf8.parse("12345678"),
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
  });
console.log(decrypted.toString(CryptoJS.enc.Utf8))// ****************************

复制代码


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐