📄 desedeengine.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: DESedeEngine.java
package jit.crypto.engines;
import jit.crypto.CipherParameters;
import jit.crypto.DataLengthException;
import jit.crypto.params.KeyParameter;
// Referenced classes of package jit.crypto.engines:
// DESEngine
public class DESedeEngine extends DESEngine
{
protected static final int BLOCK_SIZE = 8;
private int workingKey1[];
private int workingKey2[];
private int workingKey3[];
private boolean forEncryption;
public DESedeEngine()
{
workingKey1 = null;
workingKey2 = null;
workingKey3 = null;
}
public void init(boolean encrypting, CipherParameters params)
{
if(!(params instanceof KeyParameter))
throw new IllegalArgumentException("invalid parameter passed to DESede init - ".concat(String.valueOf(String.valueOf(params.getClass().getName()))));
byte keyMaster[] = ((KeyParameter)params).getKey();
byte key1[] = new byte[8];
byte key2[] = new byte[8];
byte key3[] = new byte[8];
forEncryption = encrypting;
if(keyMaster.length == 24)
{
System.arraycopy(keyMaster, 0, key1, 0, key1.length);
System.arraycopy(keyMaster, 8, key2, 0, key2.length);
System.arraycopy(keyMaster, 16, key3, 0, key3.length);
workingKey1 = generateWorkingKey(encrypting, key1);
workingKey2 = generateWorkingKey(!encrypting, key2);
workingKey3 = generateWorkingKey(encrypting, key3);
} else
{
System.arraycopy(keyMaster, 0, key1, 0, key1.length);
System.arraycopy(keyMaster, 8, key2, 0, key2.length);
workingKey1 = generateWorkingKey(encrypting, key1);
workingKey2 = generateWorkingKey(!encrypting, key2);
workingKey3 = workingKey1;
}
}
public String getAlgorithmName()
{
return "DESede";
}
public int getBlockSize()
{
return 8;
}
public int processBlock(byte in[], int inOff, byte out[], int outOff)
{
if(workingKey1 == null)
throw new IllegalStateException("DESede engine not initialised");
if(inOff + 8 > in.length)
throw new DataLengthException("input buffer too short");
if(outOff + 8 > out.length)
throw new DataLengthException("output buffer too short");
if(forEncryption)
{
desFunc(workingKey1, in, inOff, out, outOff);
desFunc(workingKey2, out, outOff, out, outOff);
desFunc(workingKey3, out, outOff, out, outOff);
} else
{
desFunc(workingKey3, in, inOff, out, outOff);
desFunc(workingKey2, out, outOff, out, outOff);
desFunc(workingKey1, out, outOff, out, outOff);
}
return 8;
}
public void reset()
{
}
static
{
BLOCK_SIZE = 8;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -