包含java与cdes的词条
今天给各位分享java与cdes的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、javaDES加密 C 语言DES解密
- 2、Des加密解密方法 用java C#和C++三种方式实现
- 3、c语言des加密和3des加密与Java中des加密和3des加密结果不同
- 4、java与C# DES 字符串加解密,求c#的加解密方法
- 5、有什么区别DES实现之间的C和java
- 6、DES加密解密问题 java与C 通讯
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的信息别忘了在本站进行查找喔。