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

📄 ripemd320digest.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   RIPEMD320Digest.java

package org.bouncycastle.crypto.digests;


// Referenced classes of package org.bouncycastle.crypto.digests:
//			GeneralDigest

public class RIPEMD320Digest extends GeneralDigest
{

	private static final int DIGEST_LENGTH = 40;
	private int H0;
	private int H1;
	private int H2;
	private int H3;
	private int H4;
	private int H5;
	private int H6;
	private int H7;
	private int H8;
	private int H9;
	private int X[];
	private int xOff;

	public RIPEMD320Digest()
	{
		X = new int[16];
		reset();
	}

	public RIPEMD320Digest(RIPEMD320Digest t)
	{
		super(t);
		X = new int[16];
		H0 = t.H0;
		H1 = t.H1;
		H2 = t.H2;
		H3 = t.H3;
		H4 = t.H4;
		H5 = t.H5;
		H6 = t.H6;
		H7 = t.H7;
		H8 = t.H8;
		H9 = t.H9;
		System.arraycopy(t.X, 0, X, 0, t.X.length);
		xOff = t.xOff;
	}

	public String getAlgorithmName()
	{
		return "RIPEMD320";
	}

	public int getDigestSize()
	{
		return 40;
	}

	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 & -1L);
		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);
		unpackWord(H5, out, outOff + 20);
		unpackWord(H6, out, outOff + 24);
		unpackWord(H7, out, outOff + 28);
		unpackWord(H8, out, outOff + 32);
		unpackWord(H9, out, outOff + 36);
		reset();
		return 40;
	}

	public void reset()
	{
		super.reset();
		H0 = 0x67452301;
		H1 = 0xefcdab89;
		H2 = 0x98badcfe;
		H3 = 0x10325476;
		H4 = 0xc3d2e1f0;
		H5 = 0x76543210;
		H6 = 0xfedcba98;
		H7 = 0x89abcdef;
		H8 = 0x1234567;
		H9 = 0x3c2d1e0f;
		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 a = H0;
		int b = H1;
		int c = H2;
		int d = H3;
		int e = H4;
		int aa = H5;
		int bb = H6;
		int cc = H7;
		int dd = H8;
		int ee = H9;
		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);
		int t = a;
		a = aa;
		aa = t;
		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);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -