aes密钥扩展java实现,需要使用bouncycastle将AES 256密钥“扩展”为...
AES-128使用10輪,AES-192使用12輪,AES-256使用14輪.
使用BouncyCastle,可以在名為org.bouncycastle.crypto.engines.AESEngine的類中的私有方法generateWorkingKey()中實現它.這不是通用的實現:
該方法開始于:
[...]
int KC = keyLen >>> 2;
ROUNDS = KC + 6; // This is not always true for the generalized Rijndael that allows larger block sizes
int[][] W = new int[ROUNDS+1][4]; // 4 words in a block
switch (KC) {
case 4:
[...]
for (int i = 1; i <= 10; ++i)
閱讀此代碼,很容易看到,如果密鑰長度為128位,則keyLen值為16(字節),因此KC為4,則ROUNDS為10(這是循環的上限).但這是硬編碼的.對于其他密鑰長度,在包含循環(上限為輪數)的開關情況下,也以相同的方式對其進行硬編碼.
因此,對于您的Cryptonight實現,其密鑰長度為256位,但經過10次回合,BouncyCastle實現中的硬編碼值不符合您的需求.
因此,您需要派生BouncyCastle并修改此代碼以實現您的目標.
總結
以上是生活随笔為你收集整理的aes密钥扩展java实现,需要使用bouncycastle将AES 256密钥“扩展”为...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php远程开机ubuntu,Ubuntu
- 下一篇: php5时区,[摘]PHP5.1时区设置