java - 如何使用 Rijndael 和 256 位的 block 大小进行加密或解密?

标签 java encryption cryptography aes rijndael

出于某些原因,我需要使用 256 位 block 大小而不是使用 128 位 block 大小的 AES 实现 Rijndael 解压(原因:数据在 PHP 中使用 Rijndael 加密...)。

如何更改密码的 block 大小?

如果我只是用 "RIJNDAEL/CFB/PKCS5Padding" 获得密码并尝试用 256 位初始化 IV,我会得到一个异常,因为 block 大小只有 128 位。

最佳答案

除了具有 128 位 block 大小的 Rijndael 之外,任何 Sun JCE 供应商都不支持任何算法:这是 AES 算法。要获得具有 256 位 block 大小的 rijndael,您将不得不去其他地方。我建议 Bouncycastle java图书馆。 RijndaelEngine类有一个构造函数,它接受以位为单位的 block 大小。大多数人找到 PaddedBufferedBlockCipher与合适的填充一起使用时类会更方便,例如

PaddedBufferedBlockCipher c = new PaddedBufferedBlockCipher(new RijndaelEngine(256), new PKCS7Padding());

关于java - 如何使用 Rijndael 和 256 位的 block 大小进行加密或解密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8083144/

相关文章:

c# - AesManaged 实现在 Mono 下中断......?

java - 尝试将自定义字体应用于按钮时出现 NullPointerException

java - 计算 HashMap/HashTable 的调用次数

java - AES/CBC/PKCS5Padding Java 加密错误 - javax.crypto.BadPaddingException : Given final block not properly padded

security - 最好的核导弹加密系统是什么?

c# - 在 C# 中解密 PKCS#7 加密数据

java - 使用 AmazonS3Client java 在 S3 上上传文件

java - Eclipse-如何删除引用库中添加的 "from class path"的 jar

java spring - 覆盖从属性文件接收的属性值

C# Byte[] 加密