blockciphervectortest.java

来自「J2ME加密算法的代码!里面包括常用的算法」· Java 代码 · 共 72 行

JAVA
72
字号
package org.bouncycastle.crypto.test;import org.bouncycastle.crypto.BlockCipher;import org.bouncycastle.crypto.BufferedBlockCipher;import org.bouncycastle.crypto.CipherParameters;import org.bouncycastle.util.encoders.Hex;import org.bouncycastle.util.test.SimpleTest;/** * a basic test that takes a cipher, key parameter, and an input * and output string. This test wraps the engine in a buffered block * cipher with padding disabled. */public class BlockCipherVectorTest    extends SimpleTest{    int                 id;    BlockCipher         engine;    CipherParameters    param;    byte[]              input;    byte[]              output;    public BlockCipherVectorTest(        int                 id,        BlockCipher         engine,        CipherParameters    param,        String              input,        String              output)    {        this.id = id;        this.engine = engine;        this.param = param;        this.input = Hex.decode(input);        this.output = Hex.decode(output);    }    public String getName()    {        return engine.getAlgorithmName() + " Vector Test " + id;    }    public void performTest()        throws Exception    {        BufferedBlockCipher cipher = new BufferedBlockCipher(engine);        cipher.init(true, param);        byte[]  out = new byte[input.length];        int len1 = cipher.processBytes(input, 0, input.length, out, 0);            cipher.doFinal(out, len1);        if (!areEqual(out, output))        {            fail("failed - " + "expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(out)));        }        cipher.init(false, param);        int len2 = cipher.processBytes(output, 0, output.length, out, 0);        cipher.doFinal(out, len2);        if (!areEqual(input, out))        {            fail("failed reversal got " + new String(Hex.encode(out)));        }    }}

⌨️ 快捷键说明

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