JS实现DES

简介

对称加密算法

DES(Data Encryption Standard)是一种对称密钥加密算法,用于加密和解密数据。它使用56位的密钥和一系列的置换和替换操作来加密数据。DES算法将64位的明文分成64位的数据块,然后通过16轮的加密运算来加密数据。

每一轮加密操作包括数据块的置换和替换步骤,其中密钥被用来控制这些步骤。最后一轮加密完成后,得到的64位数据块就是加密后的密文。

解密过程与加密过程相反,通过使用相同的密钥和相反顺序的操作来将密文解密为明文。

JS 实现

关键参数:密钥 key

<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<script>
//DES 加密
function encryptByDES(message, key){
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.ciphertext.toString();
}
//DES 解密
function decryptByDES(ciphertext, key){
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var decrypted = CryptoJS.DES.decrypt({
        ciphertext: CryptoJS.enc.Hex.parse(ciphertext)
    }, keyHex, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    var result_value = decrypted.toString(CryptoJS.enc.Utf8);
    return result_value;
}
</script>

//调用
<script>
var message = '111111';//需要加密的数据
var key = '12345678';//加密密钥 key
var desMessage = 'xxxxxxxxxx';
//加密
desMessage = encryptByDES(message, key);
console.log(desMessage);
//解密
message = decryptByDES(desMessage,key)
console.log(message);
</script>