java中aes四种加密模式,在java中使用模式ctr解密AES加密的字节

让我简短地解释一下.我在python中有这个加密器:

它使用PyCrypto库.

from Crypto import Random

from Crypto.Cipher import AES

from Crypto.Util import Counter

iv = Random.new().read(8)

encryptor = AES.new(

CRYPTOGRAPHY_KEY, // 32 bytes

AES.MODE_CTR,

counter=Counter.new(64, prefix=iv),

)

我想在Java中为其提供解密器.

我写了这段代码,但它引发了java.security.InvalidAlgorithmParameterException:错误的IV长度:必须为16个字节长.

SecretKeySpec key = new SecretKeySpec(KEY, "AES");

IvParameterSpec ivSpec = new IvParameterSpec(iv);

Cipher cipher = Cipher.getInstance("AES/CTR/NoPadding");

cipher.init(Cipher.DECRYPT_MODE, key, ivSpec);

附言我应该指出,我不是经验丰富的Java开发人员.

更新.

问题在于初始化向量.

特别感谢@Andy的时间.

解:

byte[] nonceAndCounter = new byte[16];

System.arraycopy(iv,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值