在某个项目中,需要开发一个与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);

java的et5_Javascript与java相同的3des加密(使用etdesede/CBC/PKCS5Padding )相关推荐

  1. java ios 3des_IOS开发入门之iOS 3DES加密 和 java 3DES 解密

    本文将带你了解IOS开发入门之iOS 3DES加密  和 java  3DES 解密,希望本文对大家学ios有所帮助 对称加密算法 3des   在iOS 客户端加密算法 首先进入头文件: #impo ...

  2. Java中3DES加密解密示例

    在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包: jce.jar security/US_export_policy. ...

  3. java之php、Android、JAVA、C# 3DES加密解密

    异常如下 1.javax.crypto.BadPaddingException: Given final block not properly padded 1)要确认下是否加密和解密都是使用相同的填 ...

  4. 3des java ecb_PHP 3DES加密 与JAVA通用 加密模式:ECB

    昨天帮同事解决了一个接口加密的算法,同事是个小姑娘,不懂,所以老大派我协助她,所以我为了不在姑凉面前掉面子~~火速解决它... 甲方是电信,JAVA写的接口,我一听头就大了,大家都知道~~PHP在加密 ...

  5. java 3des 32位密钥_3des,java_java 中32位秘钥长度的 3des加密方法?,3des,java - phpStudy...

    java 中32位秘钥长度的 3des加密方法? java 中 3des加密 默认是24位秘钥的 现在需求是 32位秘钥加密 尝试很多种方法 解决 结果都不正确 // 密钥 private final ...

  6. java 3des加密_Java使用3DES加密解密的流程 - 3des加密解密详细解释

    Java使用3DES加密解密的流程 ①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象 SecretKey deskey = new Secret ...

  7. php 3des 兼容java,java版3des加密程序,可与php兼容

    java版3des加密程序,可与php兼容 时间:2009-03-29 22:35来源:未知 作者:admin 点击:次 代码: import java.io.UnsupportedEncodingE ...

  8. Java实现3DES加密解密(DESede/ECB/PKCS5Padding使用)

    一.简介 3DES(又叫Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称. 它相当于是对每个数据块应用三次DES加密算 ...

  9. JAVA的3DES加密代码转成oc_iOS之DES加密

    项目是使用3DES算法,ECB分组加密模式. 我们后端使用的加密过程:对明文进行十六进制编码,在使用3DES加密.iOS端解密需要把密文进行二进制解码,再使用3DES解密.后来查阅资料看到,后端也可以 ...

最新文章

  1. vtigercrm学习(二)
  2. html 模板引擎 热部署,springboot系列四、配置模板引擎、配置热部署
  3. 为了熟练掌握动态SQL你必须要知道Mybatis中的OGNL表达式
  4. python画散点图分布-python画图汇总(持续更新)
  5. python k-means聚类分析_python进行数据分析
  6. Netty : writeAndFlush的线程安全及并发问题
  7. 一步步编写操作系统 65 标准调用约定stdcall 汇编实战
  8. lr不能直接转ps编辑_摄影后期调色软件,Lr软件包
  9. Web应用程序中Resource Bundle技术概述
  10. 破解版超级数据恢复软件-内含已破解注册码
  11. SSM框架整合详细过程
  12. 西门子、安川、三菱伺服技术完全精通系列丛书!
  13. 教你如何认汽车标志(转)
  14. 中国开源走向第二梯队!
  15. android o bln-al10,华为荣耀BLN-AL10是什么型号
  16. unity怎么制作云飘动_【Unity3D】实现云循环漂浮效果
  17. Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的区别
  18. 正电荷/内质网靶向性/蓝色/mCy-ER/绿色/开关型/CySeN花菁染料近红外荧光探针的制备
  19. CSDN发博客上传照片失败问题解决方案
  20. hifiasm对HiFi PacBio进行组装

热门文章

  1. mysql创建表格1warning_MySQL:创建、修改和删除表
  2. java ajax 获取headers_Ajax获取Response头信息
  3. 计算机应用基础试模块5ACCSE,2015年计算机二级《Access》上机最后冲刺卷(1)
  4. Spring MVC表单验证
  5. ubuntu php7 memcache,linux上安装php7 memcache扩展
  6. python gui开发_python 开发GUI应用之Dabo
  7. linux远程虚拟桌面,2020-07-23 Linux 远程连接虚拟桌面
  8. libsvm python_LibSVM for Python 使用
  9. res_config_mysql和chan_sip模块的加载分析
  10. CSerialPort类定义的消息