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

📄 pkcs12test.java

📁 J2ME加密算法的代码!里面包括常用的算法
💻 JAVA
字号:
package org.bouncycastle.crypto.test;import org.bouncycastle.crypto.CipherParameters;import org.bouncycastle.crypto.PBEParametersGenerator;import org.bouncycastle.crypto.digests.SHA1Digest;import org.bouncycastle.crypto.generators.PKCS12ParametersGenerator;import org.bouncycastle.crypto.params.KeyParameter;import org.bouncycastle.crypto.params.ParametersWithIV;import org.bouncycastle.util.encoders.Hex;import org.bouncycastle.util.test.SimpleTestResult;import org.bouncycastle.util.test.Test;import org.bouncycastle.util.test.TestResult;/** * test for PKCS12 key generation - vectors from  * <a href=http://www.drh-consultancy.demon.co.uk/test.txt> * http://www.drh-consultancy.demon.co.uk/test.txt</a> */public class PKCS12Test    implements Test{    char[]  password1 = { 's', 'm', 'e', 'g' };    char[]  password2 = { 'q', 'u', 'e', 'e', 'g' };    private boolean isEqual(        byte[]  a,        byte[]  b)    {        if (a.length != b.length)        {            return false;        }        for (int i = 0; i != a.length; i++)        {            if (a[i] != b[i])            {                return false;            }        }        return true;    }    private TestResult run1(        int     id,        char[]  password,        byte[]  salt,        int     iCount,        byte[]  result)    {        PBEParametersGenerator  generator = new PKCS12ParametersGenerator(                                                    new SHA1Digest());        generator.init(                PBEParametersGenerator.PKCS12PasswordToBytes(password),                salt,                iCount);        CipherParameters  key = generator.generateDerivedParameters(24 * 8);        if (isEqual(result, ((KeyParameter)key).getKey()))        {            return new SimpleTestResult(true, "PKCS12Test: Okay");        }        else        {            return new SimpleTestResult(false, "PKCS12Test: id "                                                    + id + " Failed");        }    }    private TestResult run2(        int     id,        char[]  password,        byte[]  salt,        int     iCount,        byte[]  result)    {        PBEParametersGenerator  generator = new PKCS12ParametersGenerator(                                                    new SHA1Digest());        generator.init(                PBEParametersGenerator.PKCS12PasswordToBytes(password),                salt,                iCount);        ParametersWithIV params = (ParametersWithIV)generator.generateDerivedParameters(64, 64);        if (isEqual(result, params.getIV()))        {            return new SimpleTestResult(true, "PKCS12Test: Okay");        }        else        {            return new SimpleTestResult(false, "PKCS12Test: id "                                                    + id + " Failed");        }    }    private TestResult run3(        int     id,        char[]  password,        byte[]  salt,        int     iCount,        byte[]  result)    {        PBEParametersGenerator  generator = new PKCS12ParametersGenerator(                                                    new SHA1Digest());        generator.init(                PBEParametersGenerator.PKCS12PasswordToBytes(password),                salt,                iCount);        CipherParameters  key = generator.generateDerivedMacParameters(160);        if (isEqual(result, ((KeyParameter)key).getKey()))        {            return new SimpleTestResult(true, "PKCS12Test: Okay");        }        else        {            return new SimpleTestResult(false, "PKCS12Test: id "                                                    + id + " Failed");        }    }    public String getName()    {        return "PKCS12Test";    }    public TestResult perform()    {        TestResult  result;        result = run1(1, password1, Hex.decode("0A58CF64530D823F"), 1,                Hex.decode("8AAAE6297B6CB04642AB5B077851284EB7128F1A2A7FBCA3"));        if (result.isSuccessful())        {            result = run2(2, password1, Hex.decode("0A58CF64530D823F"), 1,                Hex.decode("79993DFE048D3B76"));        }        if (result.isSuccessful())        {            result = run1(3, password1, Hex.decode("642B99AB44FB4B1F"), 1,                Hex.decode("F3A95FEC48D7711E985CFE67908C5AB79FA3D7C5CAA5D966"));        }        if (result.isSuccessful())        {            result = run2(4, password1, Hex.decode("642B99AB44FB4B1F"), 1,                Hex.decode("C0A38D64A79BEA1D"));        }        if (result.isSuccessful())        {            result = run3(5, password1, Hex.decode("3D83C0E4546AC140"), 1,                Hex.decode("8D967D88F6CAA9D714800AB3D48051D63F73A312"));        }        if (result.isSuccessful())        {            result = run1(6, password2, Hex.decode("05DEC959ACFF72F7"), 1000,                Hex.decode("ED2034E36328830FF09DF1E1A07DD357185DAC0D4F9EB3D4"));        }        if (result.isSuccessful())        {            result = run2(7, password2, Hex.decode("05DEC959ACFF72F7"), 1000,                Hex.decode("11DEDAD7758D4860"));        }        if (result.isSuccessful())        {            result = run1(8, password2, Hex.decode("1682C0FC5B3F7EC5"), 1000,                Hex.decode("483DD6E919D7DE2E8E648BA8F862F3FBFBDC2BCB2C02957F"));        }        if (result.isSuccessful())        {            result = run2(9, password2, Hex.decode("1682C0FC5B3F7EC5"), 1000,                Hex.decode("9D461D1B00355C50"));        }        if (result.isSuccessful())        {            result = run3(10, password2, Hex.decode("263216FCC2FAB31C"), 1000,                Hex.decode("5EC4C7A80DF652294C3925B6489A7AB857C83476"));        }        return result;    }    public static void main(        String[]    args)    {        PKCS12Test      test = new PKCS12Test();        TestResult      result = test.perform();        System.out.println(result);    }}

⌨️ 快捷键说明

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