⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ripemd160digest.java

📁 进行与数字证书相关开发必须的java源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// 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 + -