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位加密。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值