Java AES-256用IGE解密

Java AES-256用IGE解密,java,encryption,aes,Java,Encryption,Aes,我正试图用IGE解密AES-256。但我不知道如何使用256位密钥 在代码键中-字节[],长度==32IV。长度==32块大小==16 Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding"); cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key, "AES")); Xprev = java.util.Arrays.copyOfRange(IV, 0, BlockSize); Ypr

我正试图用IGE解密AES-256。但我不知道如何使用256位密钥

在代码键中-字节[],长度==32IV。长度==32块大小==16

Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key, "AES"));

Xprev = java.util.Arrays.copyOfRange(IV, 0, BlockSize);
Yprev = java.util.Arrays.copyOfRange(IV, BlockSize, IV.length);

Decripted = new byte[0];

for (int i = 0; i < Message.length; i += BlockSize) { 
    Y = java.util.Arrays.copyOfRange(Message, i, i+BlockSize); 
    X = XOR(cipher.doFinal(XOR(Y,Xprev)), Yprev);
    Xprev = X;
    Yprev = Y;

    Decripted = sumBytes(Decripted, X);
}
Cipher-Cipher=Cipher.getInstance(“AES/ECB/NoPadding”);
cipher.init(cipher.DECRYPT_模式,新的SecretKeySpec(key,“AES”));
Xprev=java.util.Arrays.copyOfRange(IV,0,BlockSize);
Yprev=java.util.Arrays.copyOfRange(IV,BlockSize,IV.length);
Decripted=新字节[0];
对于(int i=0;i
你就快到了。您应该在函数中用
YPrev
交换
Xprev
,用
Y
交换
X
。警告:仅针对单个测试向量进行测试

public static final byte[] ige(final byte[] key, final byte[] IV,
        final byte[] Message) throws Exception {

    final Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
    cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key, "AES"));

    final int blocksize = cipher.getBlockSize();

    byte[] xPrev = Arrays.copyOfRange(IV, 0, blocksize);
    byte[] yPrev = Arrays.copyOfRange(IV, blocksize, IV.length);

    byte[] decrypted = new byte[0];

    byte[] y, x;
    for (int i = 0; i < Message.length; i += blocksize) {
        x = java.util.Arrays.copyOfRange(Message, i, i + blocksize);
        y = xor(cipher.doFinal(xor(x, yPrev)), xPrev);
        xPrev = x;
        yPrev = y;

        decrypted = sumBytes(decrypted, y);
    }

    return decrypted;
}
公共静态最终字节[]ige(最终字节[]键,最终字节[]IV,
最后一个字节[]消息)引发异常{
final Cipher=Cipher.getInstance(“AES/ECB/NoPadding”);
cipher.init(cipher.DECRYPT_模式,新的SecretKeySpec(key,“AES”));
final int blocksize=cipher.getBlockSize();
字节[]xPrev=Arrays.copyOfRange(IV,0,blocksize);
字节[]yPrev=Arrays.copyOfRange(IV,blocksize,IV.length);
字节[]已解密=新字节[0];
字节[]y,x;
for(int i=0;i
你就快到了。您应该在函数中用
YPrev
交换
Xprev
,用
Y
交换
X
。警告:仅针对单个测试向量进行测试

public static final byte[] ige(final byte[] key, final byte[] IV,
        final byte[] Message) throws Exception {

    final Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
    cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key, "AES"));

    final int blocksize = cipher.getBlockSize();

    byte[] xPrev = Arrays.copyOfRange(IV, 0, blocksize);
    byte[] yPrev = Arrays.copyOfRange(IV, blocksize, IV.length);

    byte[] decrypted = new byte[0];

    byte[] y, x;
    for (int i = 0; i < Message.length; i += blocksize) {
        x = java.util.Arrays.copyOfRange(Message, i, i + blocksize);
        y = xor(cipher.doFinal(xor(x, yPrev)), xPrev);
        xPrev = x;
        yPrev = y;

        decrypted = sumBytes(decrypted, y);
    }

    return decrypted;
}
公共静态最终字节[]ige(最终字节[]键,最终字节[]IV,
最后一个字节[]消息)引发异常{
final Cipher=Cipher.getInstance(“AES/ECB/NoPadding”);
cipher.init(cipher.DECRYPT_模式,新的SecretKeySpec(key,“AES”));
final int blocksize=cipher.getBlockSize();
字节[]xPrev=Arrays.copyOfRange(IV,0,blocksize);
字节[]yPrev=Arrays.copyOfRange(IV,blocksize,IV.length);
字节[]已解密=新字节[0];
字节[]y,x;
for(int i=0;i
解释问题所在,
InvalidKeyException
?附议。实际的问题是什么?解密后的数据不等于提供的数据。你能把它变成一个吗?这肯定无法编译。哈哈,挑战者你好解释出了什么问题,
InvalidKeyException
?附议。实际的问题是什么?解密后的数据不等于提供的数据。你能把它变成一个吗?这肯定不会编译。哈哈,挑战者你好