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

📄 jkeyconverttest.java

📁 进行与数字证书相关开发必须的java源码
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   JKeyConvertTest.java

package jit.testsuit;

import java.io.PrintStream;
import jit.asn1parser.Parser;
import jit.crypto.CipherParameters;
import jit.crypto.params.*;
import jit.cryptolib.toolkit.Crypto;
import jit.jcrypto.JKey;
import jit.math.BigInteger;
import junit.framework.Assert;
import junit.framework.TestCase;

public class JKeyConvertTest extends TestCase
{

    private Parser parser;
    BigInteger mod;
    BigInteger pubExp;
    BigInteger priExp;
    BigInteger p;
    BigInteger q;
    BigInteger dp;
    BigInteger dq;
    BigInteger coff;

    public JKeyConvertTest(String name)
    {
        super(name);
        parser = null;
        mod = new BigInteger("dba7ecd2cb0cd61e6dc9d6802deba2f2c7ff58db2e49864e86499999c829a8903d27b054e0a44b556a3e6b5fc3ba265d5328c9fc005ede177f897034176d2f087f6cae54533889c6b65d1ef4d873340e1e54dcf6051d9bf2f52716d88798cb8edf66651eb7f0fb98048dddf110393105ca88e90760d9868bbd5e4502addbee4f", 16);
        pubExp = new BigInteger("3");
        priExp = new BigInteger("926ff33732088ebef3dbe45573f26ca1daaa3b3cc9865989aedbbbbbdac6706028c5203895c2dce39c299cea827c19938cc5dbfd5594940faa5ba022ba48ca046e1923316268d24464c21cd1f7535b0b7d1301f388416bd53c74e4423c7c0c1af3d4b4046f81ac16fc7ba5d43890896f9babe9269b7a2b0b98b822b724685a0b", 16);
        p = new BigInteger("eb7705f0f858fe5a01a697659901aa5b2e2acff664715ab42ccd04fe4ce5b0b97f4c23bad235feb074536432e84264e1bd3cd1f45b8868eeceb059a3108ccc59", 16);
        q = new BigInteger("eecff399474250061d935c544c748121b48d8a12544a1f7eedaabb76dff908acf25b335d3e787ac5158100ffd31dfdfca3ca39591c19dd0b8999b74ce6b29ae7", 16);
        dp = new BigInteger("9cfa03f5fae5fee6abc464ee66011c3cc971dff9984b91cd733358a98899207baa32c27c8c23ff204d8ced77458198967e288bf83d059b49df203bc20b08883b", 16);
        dq = new BigInteger("9f354d10da2c3559690ce83832f85616785e5c0c38316a549e71d24f3ffb5b1df6e777937efafc8363ab55ffe213fea86d317b90bd66935d06667a33447711ef", 16);
        coff = new BigInteger("9f864f86695a64d08c04c2eb29d5e3996a463ef764c640cf5db748c2d0757561d3153f925cd5d69fd6a8040e27ee29bb0d60a30bf140a45b2555263a2cbc5969", 16);
    }

    protected void setUp()
        throws Exception
    {
        super.setUp();
        parser = new Parser();
    }

    protected void tearDown()
        throws Exception
    {
        parser = null;
        super.tearDown();
    }

    public void testConver_DES()
        throws Exception
    {
        JKey jKey = null;
        CipherParameters desKey = Crypto.generateSymmetricKey(6, 0, false);
        jKey = Parser.convert2JKey(145, desKey);
        JKeyConvertTest _tmp = this;
        CipherParameters actualReturn = Parser.conver2CipherParam(jKey);
        Assert.assertTrue(isEqualSymmetricKey(desKey, actualReturn));
    }

    public void testConver_3DES()
        throws Exception
    {
        JKey jKey = null;
        CipherParameters des3Key = Crypto.generateSymmetricKey(8, 0, false);
        jKey = Parser.convert2JKey(145, des3Key);
        JKeyConvertTest _tmp = this;
        CipherParameters actualReturn = Parser.conver2CipherParam(jKey);
        Assert.assertTrue(isEqualSymmetricKey(des3Key, actualReturn));
    }

    public void testConver_RC2()
        throws Exception
    {
        JKey jKey = null;
        CipherParameters rc2Key = Crypto.generateSymmetricKey(10, 0, false);
        jKey = Parser.convert2JKey(145, rc2Key);
        JKeyConvertTest _tmp = this;
        CipherParameters actualReturn = Parser.conver2CipherParam(jKey);
        Assert.assertTrue(isEqualSymmetricKey(rc2Key, actualReturn));
    }

    public void testConver_AES()
        throws Exception
    {
        JKey jKey = null;
        CipherParameters aesKey = Crypto.generateSymmetricKey(22, 0, false);
        jKey = Parser.convert2JKey(145, aesKey);
        JKeyConvertTest _tmp = this;
        CipherParameters actualReturn = Parser.conver2CipherParam(jKey);
        Assert.assertTrue(isEqualSymmetricKey(aesKey, actualReturn));
    }

    public void testConver_CAST5()
        throws Exception
    {
        JKey jKey = null;
        CipherParameters cast5Key = Crypto.generateSymmetricKey(28, 0, false);
        jKey = Parser.convert2JKey(145, cast5Key);
        JKeyConvertTest _tmp = this;
        CipherParameters actualReturn = Parser.conver2CipherParam(jKey);
        Assert.assertTrue(isEqualSymmetricKey(cast5Key, actualReturn));
    }

    public void testConver_IDEA()
        throws Exception
    {
        JKey jKey = null;
        CipherParameters ideaKey = Crypto.generateSymmetricKey(30, 0, false);
        jKey = Parser.convert2JKey(145, ideaKey);
        JKeyConvertTest _tmp = this;
        CipherParameters actualReturn = Parser.conver2CipherParam(jKey);
        Assert.assertTrue(isEqualSymmetricKey(ideaKey, actualReturn));
    }

    public void testConver_PBE()
        throws Exception
    {
        int iterations = 1000;
        byte salt[] = {
            1, 2, 3, 4, 5, 6, 7, 8
        };
        byte password[] = "test".getBytes();
        ParametersWithIV ivParam = Crypto.generatePKCS5Parameters(16, password, salt, iterations);
        KeyParameter pwd = new KeyParameter(password);
        JKey jKey = Parser.convert2JKey(145, pwd);
        JKeyConvertTest _tmp = this;
        CipherParameters actualReturn = Parser.conver2CipherParam(jKey);
        Assert.assertTrue(isEqualSymmetricKey(pwd, actualReturn));
    }

    public void testConver_RSAPublicKey()
        throws Exception
    {
        JKey jKey = null;
        RSAKeyParameters pubKey = new RSAKeyParameters(false, mod, pubExp);
        jKey = Parser.convert2JKey(1, pubKey);
        JKeyConvertTest _tmp = this;
        CipherParameters actualReturn = Parser.conver2CipherParam(jKey);
        Assert.assertTrue(isEqualRSAPubKey(pubKey, actualReturn));
    }

    public void testConver_RSAPrivateKey()
        throws Exception
    {
        JKey jKey = null;
        RSAPrivateCrtKeyParameters priKey = new RSAPrivateCrtKeyParameters(mod, pubExp, priExp, p, q, dp, dq, coff);
        jKey = Parser.convert2JKey(2, priKey);
        JKeyConvertTest _tmp = this;
        CipherParameters actualReturn = Parser.conver2CipherParam(jKey);
        Assert.assertTrue(isEqualRSAPubKey(priKey, actualReturn));
    }

    private boolean isEqualSymmetricKey(CipherParameters key1, CipherParameters key2)
    {
        byte a[] = null;
        byte b[] = null;
        if((key1 instanceof KeyParameter) && (key2 instanceof KeyParameter))
        {
            a = ((KeyParameter)key1).getKey();
            b = ((KeyParameter)key2).getKey();
        } else
        {
            return false;
        }
        if(a.length != b.length)
            return false;
        for(int i = 0; i < a.length; i++)
            if(a[i] != b[i])
            {
                System.out.println("Symmetric Key test failtrue.");
                return false;
            }

        return true;
    }

    private boolean isEqualRSAPubKey(CipherParameters key1, CipherParameters key2)
    {
        if(!(key1 instanceof RSAKeyParameters) || !(key2 instanceof RSAKeyParameters))
            return false;
        BigInteger m1 = ((RSAKeyParameters)key1).getModulus();
        BigInteger e1 = ((RSAKeyParameters)key1).getExponent();
        BigInteger m2 = ((RSAKeyParameters)key2).getModulus();
        BigInteger e2 = ((RSAKeyParameters)key2).getExponent();
        if(!m1.equals(m2) || !e1.equals(e2))
        {
            System.out.println("RSA Public Key test failtrue.");
            return false;
        } else
        {
            return true;
        }
    }

    private boolean isEqualRSAPrvKey(CipherParameters key1, CipherParameters key2)
    {
        if(!(key1 instanceof RSAPrivateCrtKeyParameters) || !(key2 instanceof RSAPrivateCrtKeyParameters))
            return false;
        RSAPrivateCrtKeyParameters prvk1 = (RSAPrivateCrtKeyParameters)key1;
        RSAPrivateCrtKeyParameters prvk2 = (RSAPrivateCrtKeyParameters)key2;
        BigInteger k1params[] = getRSAPrvKeyParam(prvk1);
        BigInteger k2params[] = getRSAPrvKeyParam(prvk2);
        for(int i = 0; i < k1params.length; i++)
            if(!k1params[i].equals(k2params[i]))
            {
                System.out.println("RSA Private Key test failtrue.");
                return false;
            }

        return true;
    }

    private BigInteger[] getRSAPrvKeyParam(RSAPrivateCrtKeyParameters key)
    {
        BigInteger params[] = new BigInteger[8];
        params[0] = key.getModulus();
        params[1] = key.getPublicExponent();
        params[2] = key.getExponent();
        params[3] = key.getP();
        params[4] = key.getQ();
        params[5] = key.getDP();
        params[6] = key.getDQ();
        params[7] = key.getQInv();
        return params;
    }
}

⌨️ 快捷键说明

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