在java中如何实现对数据进行3DES的ECB加密算法

要加密的数据为:5140000000080401AEBFFFFFFFF7FBFE

密钥为:00000000000000000000000000000000

最后的结果为:DBBE8A87A4E37D95B5EDDD2BE6A4151F

我的代码为:

//SecretKey负责对称密钥的保存
    private SecretKey desKey;

    //完成加密和解密工作
    private Cipher c;

    //保存加密结果
    private byte[] cipherResultByte;

    private final static String Algorithm = "DESede/ECB/NoPadding";//加密方法/运算模式

    private static DESedeKeySpec dks;

    private static SecretKeyFactory keyFactory;   

    public DESeseTest02() {

        Security.addProvider(new com.sun.crypto.provider.SunJCE());

        try {

            dks = new DESedeKeySpec("00000000000000000000000000000000".getBytes());   

             keyFactory = SecretKeyFactory.getInstance("DESede");


            //生成密钥
            desKey=keyFactory.generateSecret(dks);


            //生成Cipher对象,指定其支持DES算法
            c=Cipher.getInstance(Algorithm);

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (InvalidKeySpecException e) {
            e.printStackTrace();
        }
    }


    public byte[] createEncryptor(byte[] b){

        try {

//          System.out.println(str);
            //根据密钥,对Cipher进行初使化,DECRYPT_MODE加密模式
            c.init(Cipher.ENCRYPT_MODE, desKey);

//          byte[] input=str.getBytes();
//          System.out.println(input.length);

            //加密,将结果保存
            cipherResultByte=c.doFinal(b);

        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        }
        return cipherResultByte;
    }

可加密出来的数据不对,大家帮忙给看看是怎么回事?谢谢大家

suannai0314
鹳狸媛 楼主的这个问题解决了么?下边的答案能解决问题么?如果可以麻烦采纳哦~如果没有也可以将自己的答案贴上然后进行采纳的。
接近 7 年之前 回复
allwefantasy
祝威廉 亲,你怎么知道加密出来的不对?
接近 7 年之前 回复

2个回答

把这行

"00000000000000000000000000000000".getBytes() 

换成

new byte[34]

"0".getBytes()这句和new byte[]{0}这句不一样

你密钥生成有问题,32个0的密钥,在内存里其实是16字节数据,所以你"0...0".getBytes().这句0的个数应该是16个,而不是32个。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java 3des加密算法ECB模式
Java 3des加密算法ECB模式,亲测完美通过。目前网上的大部分算法都通不过或者加进Base64之类的,还要不下载其它jar包。而代码使用时直接下载运行,无须配置和下载额外的jar包 ,只需换上自己的密钥和待加密的数据即可。
Java 3DES ECB NoPadding
在搞银联POS机的东东,略感头疼,搞了N久,还是终端-Hulk 给的方法解决了3DES加密解密的难题。 import java.security.Key; import java.security.spec.KeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.Secret
android java 3des加密 ECB/CBC
import java.security.Key; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import javax.crypto.spec.IvParameterSpec; import android.util.Base6
3des加密(双倍长)(ECB,CBC)详细介绍
网上查了下关于ECB和CBC加密,只有一些图文介绍,没有详细步骤,现在在这里记录一下自己的使用过程。 参考资料:http://blog.csdn.net/aaaaatiger/article/details/2525561 需要详细了解的朋友请自行查找其它资料,我只在这里介绍一下中间加密器的过程,以16字节密钥为例。 一、DES加密和解密 /** * DES加密 *
php中实现3DES算法(ECB加密模式PKCS5Padding填充)
讲道理,一提到3DES算法,首先想到的是要和java做交互了== 现在3DES已经渐渐被抛弃了,尤其是ECB加密模式使用的更少了,但是没办法,业务需要,合作方用的是他,你头再铁也不能怎样,那就扒扒文档咯 网上完整的php实现以经不多了,CBC加密模式居多,所以我参考了好几篇文章,整理了一个class出来,共享上来,避免后来人踩坑 感谢前人的整理总结: PHP版3DES加解密类更新成
3DES、DES的CBC、ECB
这一篇文章要解决数据加密——数据补位的问题、DES算法的两种模式ECB和CBC问题以及更加安全的算法——3DES算法。 一、数据补位 DES数据加解密就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,按照需求补足8个字节(通常补00或者FF,根据实际要求不同)进行计算,之后按照顺序将计算所得的数据连在一起即可。 这里有个问题就是为什么要进行数据
openssl c++ 3des ecb 加密
openssl 3des ecb 加密,其中的补全方式为 PKCS5Padding
objective-c java C# 3DES ECB 加密
转载自:  http://blog.sina.com.cn/s/blog_675e65880102v0e0.html 你这么屌,你家里人知道不? 原文地址: java  C# 3DES ECB 加密" style="text-decoration:none; color:rgb(152,61,158)">objective-c  java  C# 3DES ECB 加密作者:小穆 搞了3
3DES加密报文 (使用DESede/ECB/PKCS5Padding组合模式补位)
遇到一个接口请求要 RSA MD5 3Des Base64进行联合加密的.....尼玛这保密要求好高啊....3DES是一种对称加密方式,就是用同一密钥进行加密和解密需要准备什么1.所以需要一个通信双方都知道的密钥(24个字节)            单des密钥是8字节,三重des密钥就是3*8=24字节。2.一段明文... public void test_3des() throws Exce...
node和Java实现3des加密解密
//若使用以下三行代码工厂方式转换秘钥,注意,key的长度超过24的话生成的myMykeySpec对象 为key自动截取的前24位 // KeySpec myKeySpec = new DESedeKeySpec(key); // SecretKeyFactory mySecretKeyFactory = SecretKeyFactory.getInstance("DESede"); // SecretKey secretKey = mySecretKeyFactory
python实现DES加密算法和3DES加密算法
pyDes.py ############################################################################# # Documentation # #######################################################
JAVA实现DES的ECB/CBC的加密算法
1.在这里先说下关于DES算法的ECB模式,单DES加密需要的密钥长度必须是8个字节,则就是长度为16的十六进制字符串,下面自是其中的一种方式 public static String encrypt(String key, String data) { // 将传过来的key和data转换为byte型 byte[] bKey = HexConversionUt
Java进行3DES加密解密
package com.shanhy.tools.packers; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; /** * 3DES加密 * * @author SHAN
iOS 3DES加密 和 java 3DES 解密
对称加密算法 3des 在iOS 客户端加密算法 首先进入头文件: #import   #import #import -(NSString*)TripleDES:(NSString*)plainText encryptOrDecrypt:(CCOperation)encryptOrDecrypt { const void *vplainText;
3DES,C语言版,ECB,PKCS7
3DES,C语言版,ECB,PKCS7,windows,linux通用,编译通过实测,base64输出,可以与在线网站对比
如何用Java进行3DES加密解
原文地址 : http://weavesky.com/2008/01/05/java-3des/最近一个合作商提出使用3DES交换数据,本来他们有现成的代码,可惜只有.net版本,我们的服务器都是Linux,而且应用都是Java。于是对照他们提供的代码改了一个Java的版本出来,主要是不熟悉3DES,折腾了一天,终于搞定。所谓3DES,就是把DES做三次,当然不是简单地DES DES DES就行了
Des与3Des算法CBC,ECB模式
网上搜到的代码修改了下。以前主要用于解密C#中用DES加密的带IV的CBC加密模式的代码。类化了,只是类名不正确。
JAVA 3DES加密解密
import java.security.Key; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import javax.crypto.spec.IvParameterSpec; import sun.misc.BASE64Deco
openssl实现3des对称加密
转至:http://blog.csdn.net/lyjinger/article/details/1722570 #include #include #include #include /****************************************
3des加密算法的Java实现
import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class CipherTest { public static void main(String[] args) { try {
ECB CBC and 3DES
从上一篇《DES 算法详述》文章中,已经知道了DES算法的详细过程,但上一篇文章主要解决的是一个八字节数据DES加密的问题,这一篇文章要解决数据加密——数据补位的问题、DES算法的两种模式ECB和CBC问题以及更加安全的算法——3DES算法。   一、数据补位 DES数据加解密就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,按照
使用Crypto++实现3DES ECB EDE2加密及POS MAC算法
注意编译需要引用Crypto++的静态库 引入头文件: #define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1 #include "default.h" #include "modes.h" #include "cryptlib.h" #include "filters.h" #include "hex.h" #include "bench.h" #incl
3DES 和 ECB CBC 加密方式
一、数据补位 DES数据加解密就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,按照需求补足8个字节(通常补00或者FF,根据实际要求不同)进行计算,之后按照顺序将计算所得的数据连在一起即可。 这里有个问题就是为什么要进行数据补位?主要原因是DES算法加解密时要求数据必须为8个字节。 二、ECB模式 DES ECB(
DES ECB CBC and 3DES
这一篇文章要解决数据加密——数据补位的问题、DES算法的两种模式ECB和CBC问题以及更加安全的算法——3DES算法。 一、数据补位 DES数据加解密就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,按照需求补足8个字节(通常补00或者FF,根据实际要求不同)进行计算,之后按照顺序将计算所得的数据连在一起即可。 这里有个问题就是为什么要进行数据
3DES加密算法 C++实现
3DES(即Triple DES)是DES向AES过渡的加密算法,它使用3条64位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。
java 3DES 加解密
package com.mm.util; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import s
iOS中3DES加密算法的原理
要理解3DES,就必须先搞懂什么是DES。DES是美国一种由来已久的加密标准,它的工作原理是将数据按照8个字节一段进行加密或解密,从而得到一段8个字节的密文或者明文。之后按照顺序将计算所得的数据连在一起即可。这里需要注意的是,由于DES加密解密时要求数据长度必须为8个字节的倍数,因此当数据长度不足时必须先进行数据填充,这里使用的填充算法根据系统的不同可能会略有不同。 DES算法有两种工作
js与java通用的3DES(ECB,CBC)+Base64加密编码,解码解密
JS端加密过程:    key的处理:通过创建指定的key,key必须是16位/24位/32位其中一种,但是常用的3DES加密的key为24位,下面使用的就是24位,key的长度可以随意指定,在转换key时,如果key不足24位则余数补0(因为最小位数必须是0以上),如果key多余24位,则会截取前24位数,多余部分则舍弃掉。3DES加密的模式配定,有两种常见的加密方式:ECB和CBC模式第一种:...
des和3Des加密算法实现
转自: http://blog.csdn.net/noonlyandroid/article/details/6110090
分组对称密钥加密算法——DES、3DES(DESede 或 TDES)、AES
一、常用的 "分组对称密钥加密算法" 分为以下3种 (1)DES(Data Encryption Standard,标准加密算法)   1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES Data Encryption Standard) 。         DES采用了64位的分组长度和56位的密钥长度,它将64位的输入经过一系列变换得到64位的
利用3DES算法计算MAC及解加密
不少人对于3DES的算法有些陌生
常用加密算法的Java实现总结(二) ——对称加密算法DES、3DES
1、对称加密算法 1.1 定义 对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥
3DES加密java实现
java实现的3DES加密算法,类中支持多种密钥长度
python 3Des 加密
import hashlib; from Crypto.Cipher import DES3 import base64 def create_key(sk):     r=hashlib.md5(sk).digest()     return r+r[:8] def init_str(s):     l=len(s) % 16     if l!=0:        
php中3DES加密技术
因为工作中要用到加密,接口中要求也是用密文传输数据,用到3des加密,就研究了一下。 在网上也找了好多,但是都不可以用,没法正式运行,终于找到一个可以运行的,自己又修改了一下,记录下来,以后还可能会用到。   下面安装我要调用的接口文实例: 接口要求:先用3DES对数据进行加密,在用BASE64进行加密。即:BASE64(3DES(value))。
JAVA 3DES加密解密工具类
package zmx.code.test; import java.security.Key; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import javax.crypto.spec.IvParameterSpec
3DES加密算法简析
3DES加密算法并非什么新的加密算法,而是DES算法的另一种模式。是现在比较常用的一种对称加密算法,比起DES来说安全性更高。该算法的加解密过程分别是对明文/密文数据进行三次DES加密或解密,得到相应的密文或明文。假设EK()和DK()分别表示DES的加密和解密函数,P表示明文,C表示密文,那么加解密的公式如下:        加密:C =  EK3( DK2( EK1(P) ) )      
Java实现3DES对称加密
什么是3DES? 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算
C++ 3Des算法
C++的3DES算法,密钥必须是3*8的因子才可以和JAVA语言算出来的密码一致,即8个字节的字符,重复3次。 如果是相同语言实现,因子随便设置,自己可解就无所谓,如果跨平台的话,就不行。 如果其它大神有更通用的算法,望不吝赐教!
3DES 和 AES 加密算法的使用
3DES 介绍上篇文章已经介绍了 DES 算法的使用,并且也提到,在计算机计算速度特别快的今天,要破解 DES 加密过后的数据是完全有可能做到的,为什么呢?因为 DES 算法的密钥 也就64位,所有可能性加在一起也就是 2^64 次方。所以 3DES 在 DES 的基础上进行了改进,把密钥的长度加长了,可以是 112 位或者 168 位,这样密钥的可能性就增加到了 2^112 或者 2^168,也就
java中的3DES加密算法
package test;/* * 当前文件:ThreeDES.java * 作者:fenglingcompany */import java.security.Key;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;
JAVA中3des加密算法
 查看复制到剪切板打印package test;     /*   * 当前文件:ThreeDES.java   * 作者:fenglingcompany   */    import java.security.Key;   import java.security.SecureRandom;   import javax.crypto.Cip
3DES加密算法C++实现
1、实现了3DES功能的C++代码 2、支持多个key输入、支持ECB、CBC填充模式 3、不是.exe程序,是代码段;
Java 3DES加密解密(Commons.Codec Base64)
字符串 DESede(3DES) 加密。ECB模式/使用PKCS7方式填充不足位,目前给的密钥是192位 。3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密表。 3DES加密过程为:C=Ek3(Dk2(Ek1(P))) 。3DES解密过
DES和3DES加密算法C语言实现
DES和3DES加密算法C语言实现 记录DES和3DES加密算法最简洁易懂的C语言源码 typedef struct { uint32_t sk[32]; /*!< DES subkeys */ } des_context;/** * \brief Triple-DES context structure */ typedef str
基于java类库的3DES加密算法实现
别看3DES的代码很复杂,其实和DES代码一样,核心代码就那么几行加密部分的核心 Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, deskey); return cipher.doFinal(data);解密部分的核心 Cipher cipher = Cip
openssl 3des 加解密
一. 3DES加密原理 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块
AES ECB模式的JAVA实现
实现AES的ECB模式的加解密并将文件存放于txt文本中,放txt的路径可能需要进行更改,可以用exe4j将java程序改成可以执行的exe文件
c++与java互相进行3des加解密
最近项目使用3des进行数据的加解密,服务器为java,客户端为android和ios。这一点,android显然具有先天优势,对jdk的基本算法都会支持,但ios就不能支持3des的所有加密模式了,那么为了ios也能适应java的多种加密模式才有了本文的探索。1、des与3des 3des是对des进行3重加密后的结果,3des不同于des,其秘药必须为24位,然后以每8位为一个key来
DES(ECB) DES(CBC) 3DES
这一篇文章要解决数据加密——数据补位的问题、DES算法的两种模式ECB和CBC问题以及更加安全的算法——3DES算法。 一、数据补位 DES数据加解密就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,按照需求补足8个字节(通常补00或者FF,根据实际要求不同)进行计算,之后按照顺序将计算所得的数据连在一起即可。 这里有个问题就是为
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问