首页 > CryptoJS库DES解密问题

CryptoJS库DES解密问题

后端对手机号码进行des加密(java实现),再用base64进行编码返回给前端;
前端使用CryptoJS库进行base64解码,再用DES解密,但解密出来的结果是手机号码的后三位,为什么会出现这种结果?有经验的麻烦给指导下

     var key = '12345678';
     var iv= [1,1,1,1,1,1,1,1]; 
     function decryptByDES(ciphertext, key,iv) {
        ciphertext = CryptoJS.enc.Base64.parse(ciphertext);
        var keyHex = CryptoJS.enc.Utf8.parse(key);
        var decrypted = CryptoJS.DES.decrypt(ciphertext, key, {
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7,
            iv: iv
        });
        return decrypted.toString(CryptoJS.enc.Utf8);
    }

猜测应该是后端Java代码中DES加密的问题,看不到代码只能猜了。
看密钥的长度应该是单倍DES算法,分块为8字节,手机号码11字节,分块为8、3,既然你只能收到手机号码的后三位,那可能就是后端分块加密完之后没有拼接,而是直接把最后一块当成结果返回了。

根据题主的回复,应该是最后的转码的问题。decrypted应该是一个bytes数组,对bytes数组直接解码的话会导致非法的ascii字符被丢弃。

【热门文章】
【热门文章】