`
zuoshu
  • 浏览: 194709 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java aes cfb 256加密

阅读更多

调过一个加密程序,后台用c++ openssl aes cfb 128加密的,用java写的加密程序发到后台怎么都解密不了,后改用java调jni c 的openssl加密才解决。现在发现是java这边加密写的有问题,正确的加密如下,解密类似。

public static final byte[] DEFAULT_KEY = { (byte) 0xF3, (byte) 0x62,
			(byte) 0x12, (byte) 0x05, (byte) 0x13, (byte) 0xE3, (byte) 0x89,
			(byte) 0xFF, (byte) 0x23, (byte) 0x11, (byte) 0xD7, (byte) 0x36,
			(byte) 0x01, (byte) 0x23, (byte) 0x10, (byte) 0x07, (byte) 0x05,
			(byte) 0xA2, (byte) 0x10, (byte) 0x00, (byte) 0x7A, (byte) 0xCC,
			(byte) 0x02, (byte) 0x3C, (byte) 0x39, (byte) 0x01, (byte) 0xDA,
			(byte) 0x2E, (byte) 0xCB, (byte) 0x12, (byte) 0x44, (byte) 0x8B };
private static final byte[] AES_IV = { 0x15, (byte) 0xFF, 0x01, 0x00, 0x34,
			(byte) 0xAB, 0x4C, (byte) 0xD3, 0x55, (byte) 0xFE, (byte) 0xA1,
			0x22, 0x08, 0x4F, 0x13, 0x07 };
SecretKeySpec secretKeySpec = new SecretKeySpec(DEFAULT_KEY, "AES");
IvParameterSpec paramSpec = new IvParameterSpec(AES_IV);
Cipher ecipher;
ecipher = Cipher.getInstance("AES/CFB/NOPADDING");
ecipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, paramSpec);
byte[] result = ecipher.doFinal(content.getBytes());
return result;

 另外,pc java默认的jar包不支持256加密,即32位密钥。要到官网下载jar包替换java_home/jre/lib/security下的jar包才可以。android 默认支持256位加密。

分享到:
评论
2 楼 zuoshu 2013-04-12  
zjdzhayq 写道
你好,请问如果是 256位加密该如何操作呢,我查看了网上的例子都是随机生成的key,我想用我自己的一个固定的key!

按照代码里面的写,用自己的key换DEFAULT_KEY,还要自己再生成一个iv,换AES_IV
1 楼 zjdzhayq 2013-04-08  
你好,请问如果是 256位加密该如何操作呢,我查看了网上的例子都是随机生成的key,我想用我自己的一个固定的key!

相关推荐

Global site tag (gtag.js) - Google Analytics