js的3DES加密与解密

本文介绍了JavaScript中3DES加密解密的实现,包括Base64与Hex编码转换。在3DES加密过程中,代码示例显示了如何进行加密,并指出在使用Hex输出时,需要修改cipher-core.js文件以避免解密错误。通过修改文件中Base64定义为Hex定义,成功解决了解密为空的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3DES的加密与解密

Base64与Hex

Base64与Hex都属于编码形式,Hex又称Base16。在3DES的加密与解密过程中,需要进行两种编码形式的转换。

3DES的加密

首先first.html代码为

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>3DES加密</title>
</head>

<body>
    <div>
        <input id="word1" />
    </div>
    <div>
        <button id="encrypt">加密</button>
    </div>
    <div id="result1"></div>
    <div>
        <button id="decrypt">解密</button>
    </div>
    <div id="result2"></div>
</body>
<script src="js/jquery-3.4.1.min.js"></script>
<script src="js/core.js"></script>
<script src="js/cipher-core.js"></script>
<script src="js/format-hex.js"></script>
<script src="js/tripledes.js"></script>
<script src="js/ecb.js"></script>
<script src="js/md5.js"></script>
<script src="js/first.js"></script>
</html>

引用的js文件文结尾会给。
相应的first.js文件为

var key = "b2Z14a21dfPrWX12q186wsy5";
function md5Hex(data) {
   
    return CryptoJS.MD5(data).toString();
}
$(function () {
   
    $("#encrypt").click(function () {
   
        var word1 = $("#word1").val();
        var ciphertext = md5Hex(word1);//MD5加密密文
        console.log(ciphertext);
        var meg = encryptByDES(ciphertext);
        $("#result1").text(meg);
    });
    $("#decrypt").click(function () {
   
        var word1 = $("#word1").val();
        var ciphertext = md5Hex(word1);//MD5加密密文

        var text = encryptByDES(ciphertext);
        //console.log(text);
        var md=decryptByDES(text);
        $("#result2").text(md);
    });
})
function encryptByDES(message) {
   
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var encrypted = CryptoJS.TripleDES.encrypt(message, keyHex, {
   
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.toString();
}
function decryptByDES(ciphertext) {
   
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var decrypted = CryptoJS.TripleDES.decrypt(ciphertext, keyHex, {
   
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    return decrypted.toString(CryptoJS.enc.Utf8);
}

需要注意的是,我使用的是输出内容的编码方式为Hex,3DES-ECB的模式。

遇到的问题

我在网上找到的cipher-core.js文件都是Base64的输出格式,Hex输出格式下加密正确,解密为空,找了好久才发现是js文件的问题,将cipher-core.js文件中的Base64定义的改成了Hex定义,这样解密结果正确,结果为原文MD5加密之后的。

cipher-core.js文件

/**
 * Cipher core components.
 */
CryptoJS.lib.Cipher || (function (undefined) {
   
    // Shortcuts
    var C = CryptoJS;
    var C_lib = C
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值