使用1024字节密钥实现AES-256

时间:2014-09-18 21:28:39

标签: java spring encryption cryptography aes

我正在尝试编写Java代码,它将使用1024字节密钥进行AES-256加密/解密。我查看了Internet的实现,有很多方法可以实现。

我看了下面的教程:

  1. http://karanbalkar.com/2014/02/tutorial-76-implement-aes-256-encryptiondecryption-using-java/
  2. https://gist.github.com/bricef/2436364
  3. 但没有找到所需的步骤。所以我的问题是我需要开始加密/解密。不指定算法(AES-256)和密钥就足够了吗?我必须调用哪些API?


    另外,我打算编写一个实用程序类,其中有两个方法暴露给加密和解密。我打算在构造函数中初始化所有这些设置。所以建议我把这个类放在我的Spring网络应用程序中的最好方法。

1 个答案:

答案 0 :(得分:2)

AES is only defined for 128, 192 and 256 bit keys。这些分别称为AES-128,AES-192和AES-256。因此,您无法使用带有AES的1024字节密钥。

AES块大小(您描述为"数据按编码分组的大小")对于AES总是128位。 Rijndael,其子集成为AES,除128位块外还支持256位块。 Rijndael和AES都没有为1024字节密钥定义。

如果您有如此大的密钥材料,可以使用SHA-256之类的散列或HKDF之类的适当KDF将其减少到256位。显然这会将安全级别降低到256位,但这仍然很多。没有为更大的密钥定义AES的原因是传统计算机永远不能强制使用256位密钥。请参阅crypto.se上的How much would it cost in U.S. dollars to brute force a 256 bit key in a year?