javascript - CryptoJS库DES解密问题
PHP中文网
PHP中文网 2017-04-10 16:12:00
[JavaScript讨论组]

后端对手机号码进行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);
    }
PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
怪我咯

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号