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

📄 fixedsecurerandom.java

📁 kmlnjlkj nlkjlkjkljl okopokipoipo oipipipo i
💻 JAVA
字号:
package org.bouncycastle.util.test;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.security.SecureRandom;public class FixedSecureRandom    extends SecureRandom{    private byte[]       _data;        private int          _index;    private int          _intPad;        public FixedSecureRandom(byte[] value)    {        this(false, new byte[][] { value });    }        public FixedSecureRandom(        byte[][] values)    {        this(false, values);    }        /**     * Pad the data on integer boundaries. This is necessary for the classpath project's BigInteger     * implementation.     */    public FixedSecureRandom(        boolean intPad,        byte[] value)    {        this(intPad, new byte[][] { value });    }        /**     * Pad the data on integer boundaries. This is necessary for the classpath project's BigInteger     * implementation.     */    public FixedSecureRandom(        boolean intPad,        byte[][] values)    {        ByteArrayOutputStream bOut = new ByteArrayOutputStream();                for (int i = 0; i != values.length; i++)        {            try            {                bOut.write(values[i]);            }            catch (IOException e)            {                throw new IllegalArgumentException("can't save value array.");            }        }                _data = bOut.toByteArray();                if (intPad)        {            _intPad = _data.length % 4;        }    }    public void nextBytes(byte[] bytes)    {        System.arraycopy(_data, _index, bytes, 0, bytes.length);                _index += bytes.length;    }        //    // classpath's implementation of SecureRandom doesn't currently go back to nextBytes    // when next is called. We can't override next as it's a final method.    //    public int nextInt()    {        int val = 0;                val |= nextValue() << 24;        val |= nextValue() << 16;                if (_intPad == 2)        {            _intPad--;        }        else        {            val |= nextValue() << 8;        }                if (_intPad == 1)        {            _intPad--;        }        else        {            val |= nextValue();        }                return val;    }        //    // classpath's implementation of SecureRandom doesn't currently go back to nextBytes    // when next is called. We can't override next as it's a final method.    //    public long nextLong()    {        long val = 0;                val |= (long)nextValue() << 56;        val |= (long)nextValue() << 48;        val |= (long)nextValue() << 40;        val |= (long)nextValue() << 32;        val |= (long)nextValue() << 24;        val |= (long)nextValue() << 16;        val |= (long)nextValue() << 8;        val |= (long)nextValue();                return val;    }    public boolean isExhausted()    {        return _index == _data.length;    }    private int nextValue()    {        return _data[_index++] & 0xff;    }}

⌨️ 快捷键说明

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