包含java与cdes的词条

博主:adminadmin 2023-01-12 19:33:08 270

今天给各位分享java与cdes的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

javaDES加密 C 语言DES解密

再用java写一段解密算法就好了。本来数据类型就不一致。或者加密解密就用c写,还是很方便

Des加密解密方法 用java C#和C++三种方式实现

Solaris下的系统,有一个用C做的加密工具,调用Sunwcry的des(1)对文件进行加密,然后在java中对文件进行解密。java中用的是标准的DES/CBC/NoPadding算法,可是解密后发现开头有8byte的数据出错了,请高人指点一下。

cbc_encrypt.c : 加密用的C程序

cbc_decrypt.c:解密用的C程序

TestDescbc.java:解密用的java程序

Test01.dat原始文件

Test03.dat cbc_encrypt加密后的文件

Test05.dat cbc_decrypt解密后的文件

Test06.dat TestDescbc解密后的文件

c语言des加密和3des加密与Java中des加密和3des加密结果不同

java和c#的des是相同。搞出不同是你疏忽了细节,

应该贴出你那相同的明文密文样本,不同的样本,java和c#的实现

然后可以帮看是哪里疏忽了...

java与C# DES 字符串加解密,求c#的加解密方法

你先把java的一个字符比如12345,用已知的key加密,然后同样在C#里用同样的数据加密,比较一下加密的结果是否一样,如果一样再说解密的事。

有什么区别DES实现之间的C和java

可以互解,一般出问题的情况是 DES算法是8位一起处理的。不足8位时 C往往用 \0来填充。java则填充方式不一定。这会导致解密失败。 还有就是出现中文时,采用什么编码。

DES加密解密问题 java与C 通讯

经测试应该是如下问题:

1.注意取字符串bytes是编码保持一致,c的和java的保存一直,问一下c开发用的是那个。

2.key和Iv保持一致

3.加密模式和填充方式保持一致----------------------------这点的可能性比较大

比如C#里

algo.Mode=CipherMode.ECB;

algo.Padding=PaddingMode.None;

则java里对应的为

final Cipher algo=Cipher.getInstance("DES/ECB/NoPadding");

import java.io.IOException;

import java.security.SecureRandom;

import javax.crypto.Cipher;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

public class DesUtil {

private final static String DES = "DES";

public static void main(String[] args) throws Exception {

String data = "fff";//原字符

String key = "80825cf7fedff723";//加密key

System.err.println(encrypt(data, key));

System.err.println(decrypt("FAQXWvLnsSA=", key));//进行解密“FAQXWvLnsSA=”

}

/**

* Description 根据键值进行加密

* @param data

* @param key 加密键byte数组

* @return

* @throws Exception

*/

public static String encrypt(String data, String key) throws Exception {

byte[] bt = encrypt(data.getBytes(), key.getBytes());

String strs = new BASE64Encoder().encode(bt);

return strs;

}

/**

* Description 根据键值进行解密

* @param data

* @param key 加密键byte数组

* @return

* @throws IOException

* @throws Exception

*/

public static String decrypt(String data, String key) throws IOException,

Exception {

if (data == null)

return null;

BASE64Decoder decoder = new BASE64Decoder();

byte[] buf = decoder.decodeBuffer(data);

byte[] bt = decrypt(buf,key.getBytes());

return new String(bt);

}

/**

* Description 根据键值进行加密

* @param data

* @param key 加密键byte数组

* @return

* @throws Exception

*/

private static byte[] encrypt(byte[] data, byte[] key) throws Exception {

// 生成一个可信任的随机数源

SecureRandom sr = new SecureRandom();

// 从原始密钥数据创建DESKeySpec对象

DESKeySpec dks = new DESKeySpec(key);

// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);

SecretKey securekey = keyFactory.generateSecret(dks);

// Cipher对象实际完成加密操作

Cipher cipher = Cipher.getInstance(DES);

// 用密钥初始化Cipher对象

cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);

return cipher.doFinal(data);

}

/**

* Description 根据键值进行解密

* @param data

* @param key 加密键byte数组

* @return

* @throws Exception

*/

private static byte[] decrypt(byte[] data, byte[] key) throws Exception {

// 生成一个可信任的随机数源

SecureRandom sr = new SecureRandom();

// 从原始密钥数据创建DESKeySpec对象

DESKeySpec dks = new DESKeySpec(key);

// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);

SecretKey securekey = keyFactory.generateSecret(dks);

// Cipher对象实际完成解密操作

Cipher cipher = Cipher.getInstance(DES);

// 用密钥初始化Cipher对象

cipher.init(Cipher.DECRYPT_MODE, securekey, sr);

return cipher.doFinal(data);

}

}

java与cdes的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java与cdes的信息别忘了在本站进行查找喔。