📄 mgf1bytesgenerator.java
字号:
// 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: MGF1BytesGenerator.java
package org.bouncycastle.crypto.generators;
import org.bouncycastle.crypto.*;
import org.bouncycastle.crypto.params.MGFParameters;
public class MGF1BytesGenerator
implements DerivationFunction
{
private Digest digest;
private byte seed[];
private int hLen;
public MGF1BytesGenerator(Digest digest)
{
this.digest = digest;
hLen = digest.getDigestSize();
}
public void init(DerivationParameters param)
{
if (!(param instanceof MGFParameters))
{
throw new IllegalArgumentException("MGF parameters required for MGF1Generator");
} else
{
MGFParameters p = (MGFParameters)param;
seed = p.getSeed();
return;
}
}
public Digest getDigest()
{
return digest;
}
private void ItoOSP(int i, byte sp[])
{
sp[0] = (byte)(i >>> 24);
sp[1] = (byte)(i >>> 16);
sp[2] = (byte)(i >>> 8);
sp[3] = (byte)(i >>> 0);
}
public int generateBytes(byte out[], int outOff, int len)
throws DataLengthException, IllegalArgumentException
{
byte hashBuf[] = new byte[hLen];
byte C[] = new byte[4];
int counter = 0;
digest.reset();
do
{
ItoOSP(counter, C);
digest.update(seed, 0, seed.length);
digest.update(C, 0, C.length);
digest.doFinal(hashBuf, 0);
System.arraycopy(hashBuf, 0, out, outOff + counter * hLen, hLen);
} while (++counter < len / hLen);
if (counter * hLen < len)
{
ItoOSP(counter, C);
digest.update(seed, 0, seed.length);
digest.update(C, 0, C.length);
digest.doFinal(hashBuf, 0);
System.arraycopy(hashBuf, 0, out, outOff + counter * hLen, len - counter * hLen);
}
return len;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -