美文网首页Encrypt
Javascript与java相同的3des加密(使用etde

Javascript与java相同的3des加密(使用etde

作者: kingjang | 来源:发表于2016-06-30 13:35 被阅读6454次

在某个项目中,需要开发一个与native相对应的web前端app,后台用的是java restful接口,请求数据时需要用的3des加密。如果想要请求接口,则需要javascript的加密与java相同,于是在baidu与google进行了大量搜索,在此记录一下过程,并希望能帮助有同样需求的小伙伴。

3des加密,通俗的理解是应用三次DES加密算法,其中有许多参数与标准,此处只介绍 java接口中使用的“etdesede/CBC/PKCS5Padding” ,IvParameterSpec自行配置。
以下是java源码:

Key deskey = "key";
String iv = "01234567";
DESedeKeySpec spec = new DESedeKeySpec(secretKey.getBytes());
SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
deskey = keyfactory.generateSecret(spec);
Cipher cipher = Cipher.getInstance("desede/CBC/PKCS5Padding");
IvParameterSpec ips = new IvParameterSpec(iv.getBytes());cipher.init(Cipher.ENCRYPT_MODE, deskey, ips);
byte[] encryptData = cipher.doFinal(plainText.getBytes(encoding));
return Base64.encode(encryptData);

javascript加密码的方法我采用了开源的CryptoJS,github地址:https://github.com/sytelus/CryptoJS
需要引入js文件:rollups/tripledes.js,components/mode-ecb.js

var encrypted = CryptoJS.DES.encrypt(message, keyHex, {  
iv:CryptoJS.enc.Utf8.parse('01234567'),    
mode: CryptoJS.mode.CBC,    
padding: CryptoJS.pad.Pkcs7});

以为一切就绪,结果console.log发现与java的3des结果不对应。
padding:CptoJS.pad.Pkcs7,可是java代码明明是pkcs5,但是javascript没有pkcs5,后来搜索,发现有人说Pkcs7与Pkcs5没什么区别。可是问题到底在哪呢?
又经过了一阵子漫长地搜索,后来终于在stackoverfllow中找到答案
CryptoJS.DES.encrypt只是des加密,而我用的是3des,需要用:CryptoJS.TripleDES.encrypt。终于换上TripleDES后问题解决 最终代码如下:

var keyHex = CryptoJS.enc.Utf8.parse('key');
var encrypted = CryptoJS.TripleDES.encrypt(message, keyHex, {    
iv:CryptoJS.enc.Utf8.parse('01234567'),    
mode: CryptoJS.mode.CBC,    
padding: CryptoJS.pad.Pkcs7});
console.log(encrypted);

相关文章

  • Javascript与java相同的3des加密(使用etde

    在某个项目中,需要开发一个与native相对应的web前端app,后台用的是java restful接口,请...

  • 3DES加密

    本文介绍了3DES加密特性,加密特点,3DES是对称加密,用一个密钥对内容进行加密,必须使用相同的密钥进行解密, ...

  • 对称加密

    常见的对称加密算法有: DES 数据加密标准 3DES 使用3个秘钥,对相同的数据执行3次加密,强度增强 A...

  • 密码学基础(二):对称加密

    什么是对称加密 加密和解密使用相同的秘钥称为对称加密。 主流的对称加密算法 DES:已经淘汰3DES:相对于DES...

  • iOS之DES加密

    项目是使用3DES算法,ECB分组加密模式。我们后端使用的加密过程:对明文进行十六进制编码,在使用3DES加密。i...

  • 03对称加密算法

    对称加密的特点 加密/解密使用相同的密钥 是可逆的 经典算法 DES 3DES AES 废话不多说 直接上 工具类...

  • AES vs 3DES

    AES和3DES都是数据加密算法,使用方法和目的相同。AES和3DES的区别是AES更快,并且更安全。AES的编码...

  • iOS对称加密(AES与DES)

    对称加密算法:指加密和解密使用相同密钥的加密算法(包括DES算法,3DES算法,RC5算法,AES算法等)。本文讲...

  • 8、对称加密 & 应用签名

    对称加密 常见的算法DES 数据加密标准(用的少,因为强度不够)3DES 使用3个密钥,对相同的数据执行3次加...

  • Java 实现 3DES 加密

    本文介绍 Java 语言实现 3DES 加密的方法。 目录 3DES 简介 代码实现CBC 3DES 简介 3DE...

网友评论

    本文标题: Javascript与java相同的3des加密(使用etde

    本文链接:https://www.haomeiwen.com/subject/tszxjttx.html