📄 ripemd160digest.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: RIPEMD160Digest.java
package jit.crypto.digests;
// Referenced classes of package jit.crypto.digests:
// GeneralDigest
public class RIPEMD160Digest extends GeneralDigest
{
private static final int DIGEST_LENGTH = 20;
private int H0;
private int H1;
private int H2;
private int H3;
private int H4;
private int X[];
private int xOff;
public RIPEMD160Digest()
{
X = new int[16];
reset();
}
public RIPEMD160Digest(RIPEMD160Digest t)
{
super(t);
X = new int[16];
H0 = t.H0;
H1 = t.H1;
H2 = t.H2;
H3 = t.H3;
H4 = t.H4;
System.arraycopy(t.X, 0, X, 0, t.X.length);
xOff = t.xOff;
}
public String getAlgorithmName()
{
return "RIPEMD160";
}
public int getDigestSize()
{
return 20;
}
protected void processWord(byte in[], int inOff)
{
X[xOff++] = in[inOff] & 0xff | (in[inOff + 1] & 0xff) << 8 | (in[inOff + 2] & 0xff) << 16 | (in[inOff + 3] & 0xff) << 24;
if(xOff == 16)
processBlock();
}
protected void processLength(long bitLength)
{
if(xOff > 14)
processBlock();
X[14] = (int)(bitLength & (long)-1);
X[15] = (int)(bitLength >>> 32);
}
private void unpackWord(int word, byte out[], int outOff)
{
out[outOff] = (byte)word;
out[outOff + 1] = (byte)(word >>> 8);
out[outOff + 2] = (byte)(word >>> 16);
out[outOff + 3] = (byte)(word >>> 24);
}
public int doFinal(byte out[], int outOff)
{
finish();
unpackWord(H0, out, outOff);
unpackWord(H1, out, outOff + 4);
unpackWord(H2, out, outOff + 8);
unpackWord(H3, out, outOff + 12);
unpackWord(H4, out, outOff + 16);
reset();
return 20;
}
public void reset()
{
super.reset();
H0 = 0x67452301;
H1 = 0xefcdab89;
H2 = 0x98badcfe;
H3 = 0x10325476;
H4 = 0xc3d2e1f0;
xOff = 0;
for(int i = 0; i != X.length; i++)
X[i] = 0;
}
private final int RL(int x, int n)
{
return x << n | x >>> 32 - n;
}
private final int f1(int x, int y, int z)
{
return x ^ y ^ z;
}
private final int f2(int x, int y, int z)
{
return x & y | ~x & z;
}
private final int f3(int x, int y, int z)
{
return (x | ~y) ^ z;
}
private final int f4(int x, int y, int z)
{
return x & z | y & ~z;
}
private final int f5(int x, int y, int z)
{
return x ^ (y | ~z);
}
protected void processBlock()
{
int aa;
int a = aa = H0;
int bb;
int b = bb = H1;
int cc;
int c = cc = H2;
int dd;
int d = dd = H3;
int ee;
int e = ee = H4;
a = RL(a + f1(b, c, d) + X[0], 11) + e;
c = RL(c, 10);
e = RL(e + f1(a, b, c) + X[1], 14) + d;
b = RL(b, 10);
d = RL(d + f1(e, a, b) + X[2], 15) + c;
a = RL(a, 10);
c = RL(c + f1(d, e, a) + X[3], 12) + b;
e = RL(e, 10);
b = RL(b + f1(c, d, e) + X[4], 5) + a;
d = RL(d, 10);
a = RL(a + f1(b, c, d) + X[5], 8) + e;
c = RL(c, 10);
e = RL(e + f1(a, b, c) + X[6], 7) + d;
b = RL(b, 10);
d = RL(d + f1(e, a, b) + X[7], 9) + c;
a = RL(a, 10);
c = RL(c + f1(d, e, a) + X[8], 11) + b;
e = RL(e, 10);
b = RL(b + f1(c, d, e) + X[9], 13) + a;
d = RL(d, 10);
a = RL(a + f1(b, c, d) + X[10], 14) + e;
c = RL(c, 10);
e = RL(e + f1(a, b, c) + X[11], 15) + d;
b = RL(b, 10);
d = RL(d + f1(e, a, b) + X[12], 6) + c;
a = RL(a, 10);
c = RL(c + f1(d, e, a) + X[13], 7) + b;
e = RL(e, 10);
b = RL(b + f1(c, d, e) + X[14], 9) + a;
d = RL(d, 10);
a = RL(a + f1(b, c, d) + X[15], 8) + e;
c = RL(c, 10);
aa = RL(aa + f5(bb, cc, dd) + X[5] + 0x50a28be6, 8) + ee;
cc = RL(cc, 10);
ee = RL(ee + f5(aa, bb, cc) + X[14] + 0x50a28be6, 9) + dd;
bb = RL(bb, 10);
dd = RL(dd + f5(ee, aa, bb) + X[7] + 0x50a28be6, 9) + cc;
aa = RL(aa, 10);
cc = RL(cc + f5(dd, ee, aa) + X[0] + 0x50a28be6, 11) + bb;
ee = RL(ee, 10);
bb = RL(bb + f5(cc, dd, ee) + X[9] + 0x50a28be6, 13) + aa;
dd = RL(dd, 10);
aa = RL(aa + f5(bb, cc, dd) + X[2] + 0x50a28be6, 15) + ee;
cc = RL(cc, 10);
ee = RL(ee + f5(aa, bb, cc) + X[11] + 0x50a28be6, 15) + dd;
bb = RL(bb, 10);
dd = RL(dd + f5(ee, aa, bb) + X[4] + 0x50a28be6, 5) + cc;
aa = RL(aa, 10);
cc = RL(cc + f5(dd, ee, aa) + X[13] + 0x50a28be6, 7) + bb;
ee = RL(ee, 10);
bb = RL(bb + f5(cc, dd, ee) + X[6] + 0x50a28be6, 7) + aa;
dd = RL(dd, 10);
aa = RL(aa + f5(bb, cc, dd) + X[15] + 0x50a28be6, 8) + ee;
cc = RL(cc, 10);
ee = RL(ee + f5(aa, bb, cc) + X[8] + 0x50a28be6, 11) + dd;
bb = RL(bb, 10);
dd = RL(dd + f5(ee, aa, bb) + X[1] + 0x50a28be6, 14) + cc;
aa = RL(aa, 10);
cc = RL(cc + f5(dd, ee, aa) + X[10] + 0x50a28be6, 14) + bb;
ee = RL(ee, 10);
bb = RL(bb + f5(cc, dd, ee) + X[3] + 0x50a28be6, 12) + aa;
dd = RL(dd, 10);
aa = RL(aa + f5(bb, cc, dd) + X[12] + 0x50a28be6, 6) + ee;
cc = RL(cc, 10);
e = RL(e + f2(a, b, c) + X[7] + 0x5a827999, 7) + d;
b = RL(b, 10);
d = RL(d + f2(e, a, b) + X[4] + 0x5a827999, 6) + c;
a = RL(a, 10);
c = RL(c + f2(d, e, a) + X[13] + 0x5a827999, 8) + b;
e = RL(e, 10);
b = RL(b + f2(c, d, e) + X[1] + 0x5a827999, 13) + a;
d = RL(d, 10);
a = RL(a + f2(b, c, d) + X[10] + 0x5a827999, 11) + e;
c = RL(c, 10);
e = RL(e + f2(a, b, c) + X[6] + 0x5a827999, 9) + d;
b = RL(b, 10);
d = RL(d + f2(e, a, b) + X[15] + 0x5a827999, 7) + c;
a = RL(a, 10);
c = RL(c + f2(d, e, a) + X[3] + 0x5a827999, 15) + b;
e = RL(e, 10);
b = RL(b + f2(c, d, e) + X[12] + 0x5a827999, 7) + a;
d = RL(d, 10);
a = RL(a + f2(b, c, d) + X[0] + 0x5a827999, 12) + e;
c = RL(c, 10);
e = RL(e + f2(a, b, c) + X[9] + 0x5a827999, 15) + d;
b = RL(b, 10);
d = RL(d + f2(e, a, b) + X[5] + 0x5a827999, 9) + c;
a = RL(a, 10);
c = RL(c + f2(d, e, a) + X[2] + 0x5a827999, 11) + b;
e = RL(e, 10);
b = RL(b + f2(c, d, e) + X[14] + 0x5a827999, 7) + a;
d = RL(d, 10);
a = RL(a + f2(b, c, d) + X[11] + 0x5a827999, 13) + e;
c = RL(c, 10);
e = RL(e + f2(a, b, c) + X[8] + 0x5a827999, 12) + d;
b = RL(b, 10);
ee = RL(ee + f4(aa, bb, cc) + X[6] + 0x5c4dd124, 9) + dd;
bb = RL(bb, 10);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -