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

📄 desedetest.java

📁 J2ME加密算法的代码!里面包括常用的算法
💻 JAVA
字号:
package org.bouncycastle.crypto.test;import org.bouncycastle.crypto.KeyGenerationParameters;import org.bouncycastle.crypto.Wrapper;import org.bouncycastle.crypto.engines.DESedeEngine;import org.bouncycastle.crypto.engines.DESedeWrapEngine;import org.bouncycastle.crypto.generators.DESedeKeyGenerator;import org.bouncycastle.crypto.params.DESedeParameters;import org.bouncycastle.crypto.params.KeyParameter;import org.bouncycastle.crypto.params.ParametersWithIV;import org.bouncycastle.util.encoders.Hex;import org.bouncycastle.util.test.SimpleTest;import java.security.SecureRandom;/** * DESede tester */public class DESedeTest    extends CipherTest{    static private byte[] weakKey =     // first 8 bytes non-weak         {             (byte)0x06,(byte)0x01,(byte)0x01,(byte)0x01, (byte)0x01,(byte)0x01,(byte)0x01,(byte)0x01,             (byte)0x1f,(byte)0x1f,(byte)0x1f,(byte)0x1f, (byte)0x0e,(byte)0x0e,(byte)0x0e,(byte)0x0e,             (byte)0xe0,(byte)0xe0,(byte)0xe0,(byte)0xe0, (byte)0xf1,(byte)0xf1,(byte)0xf1,(byte)0xf1,         };    static String   input1 = "4e6f77206973207468652074696d6520666f7220616c6c20";    static String   input2 = "4e6f7720697320746865";    static SimpleTest[]  tests =            {                new BlockCipherVectorTest(0, new DESedeEngine(),                        new DESedeParameters(Hex.decode("0123456789abcdef0123456789abcdef")),                        input1, "3fa40e8a984d48156a271787ab8883f9893d51ec4b563b53"),                new BlockCipherVectorTest(1, new DESedeEngine(),                        new DESedeParameters(Hex.decode("0123456789abcdeffedcba9876543210")),                        input1, "d80a0d8b2bae5e4e6a0094171abcfc2775d2235a706e232c"),                new BlockCipherVectorTest(2, new DESedeEngine(),                        new DESedeParameters(Hex.decode("0123456789abcdef0123456789abcdef0123456789abcdef")),                        input1, "3fa40e8a984d48156a271787ab8883f9893d51ec4b563b53"),                new BlockCipherVectorTest(3, new DESedeEngine(),                        new DESedeParameters(Hex.decode("0123456789abcdeffedcba98765432100123456789abcdef")),                        input1, "d80a0d8b2bae5e4e6a0094171abcfc2775d2235a706e232c")            };    DESedeTest()    {        super(tests, new DESedeEngine(), new KeyParameter(new byte[16]));    }    private void wrapTest(        int     id,        byte[]  kek,        byte[]  iv,        byte[]  in,        byte[]  out)    {        Wrapper wrapper = new DESedeWrapEngine();        wrapper.init(true, new ParametersWithIV(new KeyParameter(kek), iv));        try        {            byte[]  cText = wrapper.wrap(in, 0, in.length);            if (!areEqual(cText, out))            {                fail(": failed wrap test " + id  + " expected " + new String(Hex.encode(out)) + " got " + new String(Hex.encode(cText)));            }        }        catch (Exception e)        {            fail("failed wrap test exception: " + e.toString(), e);        }        wrapper.init(false, new KeyParameter(kek));        try        {            byte[]  pText = wrapper.unwrap(out, 0, out.length);            if (!areEqual(pText, in))            {                fail("failed unwrap test " + id  + " expected " + new String(Hex.encode(in)) + " got " + new String(Hex.encode(pText)));            }        }        catch (Exception e)        {            fail("failed unwrap test exception: " + e.toString(), e);        }    }    public void performTest()        throws Exception    {        super.performTest();        byte[]  kek1 = Hex.decode("255e0d1c07b646dfb3134cc843ba8aa71f025b7c0838251f");        byte[]  iv1 = Hex.decode("5dd4cbfc96f5453b");        byte[]  in1 = Hex.decode("2923bf85e06dd6ae529149f1f1bae9eab3a7da3d860d3e98");        byte[]  out1 = Hex.decode("690107618ef092b3b48ca1796b234ae9fa33ebb4159604037db5d6a84eb3aac2768c632775a467d4");                wrapTest(1, kek1, iv1, in1, out1);        //        // key generation        //        SecureRandom       random = new SecureRandom();        DESedeKeyGenerator keyGen = new DESedeKeyGenerator();                keyGen.init(new KeyGenerationParameters(random, 112));                byte[] kB = keyGen.generateKey();                if (kB.length != 16)        {            fail("112 bit key wrong length.");        }                keyGen.init(new KeyGenerationParameters(random, 168));                kB = keyGen.generateKey();                if (kB.length != 24)        {            fail("168 bit key wrong length.");        }                try        {            keyGen.init(new KeyGenerationParameters(random, 200));                        fail("invalid key length not detected.");        }        catch (IllegalArgumentException e)        {            // expected        }        try        {            DESedeParameters.isWeakKey(new byte[4], 0);            fail("no exception on small key");        }        catch (IllegalArgumentException e)        {            if (!e.getMessage().equals("key material too short."))            {                fail("wrong exception");            }        }        try        {            new DESedeParameters(weakKey);            fail("no exception on weak key");        }        catch (IllegalArgumentException e)        {            if (!e.getMessage().equals("attempt to create weak DESede key"))            {                fail("wrong exception");            }        }    }    public String getName()    {        return "DESede";    }    public static void main(        String[]    args)    {        runTest(new DESedeTest());    }}

⌨️ 快捷键说明

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