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

📄 digestrandomgenerator.java

📁 J2ME加密算法的代码!里面包括常用的算法
💻 JAVA
字号:
package org.bouncycastle.crypto.prng;import org.bouncycastle.crypto.Digest;/** * Random generation based on the digest with counter. Calling addSeedMaterial will * always increase the entropy of the hash. * <p> * Internal access to the digest is syncrhonized so a single one of these can be shared. * </p> */public class DigestRandomGenerator    implements RandomGenerator{    private long                counter;    private Digest              digest;    private byte[]              state;    // public constructors    public DigestRandomGenerator(        Digest digest)    {        this.digest = digest;        this.state = new byte[digest.getDigestSize()];        this.counter = 1;    }    public void addSeedMaterial(byte[] inSeed)    {        synchronized (this)        {            digestUpdate(inSeed);        }    }    public void addSeedMaterial(long rSeed)    {        synchronized (this)        {            for (int i = 0; i != 8; i++)            {                digestUpdate((byte)rSeed);                rSeed >>>= 8;            }        }    }    public void nextBytes(byte[] bytes)    {        nextBytes(bytes, 0, bytes.length);    }    public void nextBytes(byte[] bytes, int start, int len)    {        synchronized (this)        {            int stateOff = 0;            digestDoFinal(state);            for (int i = start; i != len; i++)            {                if (stateOff == state.length)                {                    digestUpdate(counter++);                    digestUpdate(state);                    digestDoFinal(state);                    stateOff = 0;                }                bytes[i] = state[stateOff++];            }            digestUpdate(counter++);            digestUpdate(state);        }    }    private void digestUpdate(long seed)    {        for (int i = 0; i != 8; i++)        {            digest.update((byte)seed);            seed >>>= 8;        }    }    private void digestUpdate(byte[] inSeed)    {        digest.update(inSeed, 0, inSeed.length);    }    private void digestDoFinal(byte[] result)    {        digest.doFinal(result, 0);    }}

⌨️ 快捷键说明

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