All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.testifyproject.bouncycastle.crypto.test.RC5Test Maven / Gradle / Ivy

package org.testifyproject.bouncycastle.crypto.test;

import org.testifyproject.bouncycastle.crypto.engines.RC532Engine;
import org.testifyproject.bouncycastle.crypto.engines.RC564Engine;
import org.testifyproject.bouncycastle.crypto.modes.CBCBlockCipher;
import org.testifyproject.bouncycastle.crypto.params.ParametersWithIV;
import org.testifyproject.bouncycastle.crypto.params.RC5Parameters;
import org.testifyproject.bouncycastle.util.encoders.Hex;
import org.testifyproject.bouncycastle.util.test.SimpleTestResult;
import org.testifyproject.bouncycastle.util.test.Test;
import org.testifyproject.bouncycastle.util.test.TestResult;

/**
 * RC5 tester - vectors from ftp://ftp.nordu.net/rfc/rfc2040.txt
 *
 * RFC 2040 "The RC5, RC5-CBC, RC5-CBC-Pad, and RC5-CTS Algorithms"
 */
public class RC5Test
    implements Test
{
    BlockCipherVectorTest[] tests =
    {
        new BlockCipherVectorTest(0, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00"), 0),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "0000000000000000", "7a7bba4d79111d1e"), 
        new BlockCipherVectorTest(1, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00"), 0),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "ffffffffffffffff", "797bba4d78111d1e"), 
        new BlockCipherVectorTest(2, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00"), 0),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000001")),
                "0000000000000000", "7a7bba4d79111d1f"), 
        new BlockCipherVectorTest(3, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00"), 0),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "0000000000000001", "7a7bba4d79111d1f"), 
        new BlockCipherVectorTest(4, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00"), 0),
                    Hex.org.testifyproject.testifyprojectcode("0102030405060708")),
                "1020304050607080", "8b9ded91ce7794a6"),
        new BlockCipherVectorTest(5, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("11"), 1),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "0000000000000000", "2f759fe7ad86a378"),
        new BlockCipherVectorTest(6, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00"), 2),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "0000000000000000", "dca2694bf40e0788"),
        new BlockCipherVectorTest(7, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00000000"), 2),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "0000000000000000", "dca2694bf40e0788"),
        new BlockCipherVectorTest(8, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00000000"), 8),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "0000000000000000", "dcfe098577eca5ff"),
        new BlockCipherVectorTest(9, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00"), 8),
                    Hex.org.testifyproject.testifyprojectcode("0102030405060708")),
                "1020304050607080", "9646fb77638f9ca8"),
        new BlockCipherVectorTest(10, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00"), 12),
                    Hex.org.testifyproject.testifyprojectcode("0102030405060708")),
                "1020304050607080", "b2b3209db6594da4"),
        new BlockCipherVectorTest(11, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00"), 16),
                    Hex.org.testifyproject.testifyprojectcode("0102030405060708")),
                "1020304050607080", "545f7f32a5fc3836"),
        new BlockCipherVectorTest(12, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("01020304"), 8),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "ffffffffffffffff", "8285e7c1b5bc7402"),
        new BlockCipherVectorTest(13, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("01020304"), 12),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "ffffffffffffffff", "fc586f92f7080934"),
        new BlockCipherVectorTest(14, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("01020304"), 16),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "ffffffffffffffff", "cf270ef9717ff7c4"),
        new BlockCipherVectorTest(15, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("0102030405060708"), 12),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "ffffffffffffffff", "e493f1c1bb4d6e8c"),
        new BlockCipherVectorTest(16, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("0102030405060708"), 8),
                    Hex.org.testifyproject.testifyprojectcode("0102030405060708")),
                "1020304050607080", "5c4c041e0f217ac3"),
        new BlockCipherVectorTest(17, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("0102030405060708"), 12),
                    Hex.org.testifyproject.testifyprojectcode("0102030405060708")),
                "1020304050607080", "921f12485373b4f7"),
        new BlockCipherVectorTest(18, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("0102030405060708"), 16),
                    Hex.org.testifyproject.testifyprojectcode("0102030405060708")),
                "1020304050607080", "5ba0ca6bbe7f5fad"),
        new BlockCipherVectorTest(19, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("01020304050607081020304050607080"), 8),
                    Hex.org.testifyproject.testifyprojectcode("0102030405060708")),
                "1020304050607080", "c533771cd0110e63"),
        new BlockCipherVectorTest(20, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("01020304050607081020304050607080"), 12),
                    Hex.org.testifyproject.testifyprojectcode("0102030405060708")),
                "1020304050607080", "294ddb46b3278d60"),
        new BlockCipherVectorTest(21, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("01020304050607081020304050607080"), 16),
                    Hex.org.testifyproject.testifyprojectcode("0102030405060708")),
                "1020304050607080", "dad6bda9dfe8f7e8"),
        new BlockCipherVectorTest(22, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("0102030405"), 12),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "ffffffffffffffff", "97e0787837ed317f"),
        new BlockCipherVectorTest(23, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("0102030405"), 8),
                    Hex.org.testifyproject.testifyprojectcode("0000000000000000")),
                "ffffffffffffffff", "7875dbf6738c6478"),
        new BlockCipherVectorTest(23, new CBCBlockCipher(new RC532Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("0102030405"), 8),
                    Hex.org.testifyproject.testifyprojectcode("7875dbf6738c6478")),
                "0808080808080808", "8f34c3c681c99695"),
        new BlockCipherVectorTest(640, new CBCBlockCipher(new RC564Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00"), 0),
                    Hex.org.testifyproject.testifyprojectcode("00000000000000000000000000000000")),
                "00000000000000000000000000000000", "9f09b98d3f6062d9d4d59973d00e0e63"),
        new BlockCipherVectorTest(641, new CBCBlockCipher(new RC564Engine()),
                new ParametersWithIV(
                    new RC5Parameters(Hex.org.testifyproject.testifyprojectcode("00"), 0),
                    Hex.org.testifyproject.testifyprojectcode("00000000000000000000000000000000")),
                "ffffffffffffffffffffffffffffffff", "9e09b98d3f6062d9d3d59973d00e0e63")
    };

    public String getName()
    {
        return "RC5";
    }

    public TestResult perform()
    {
        for (int i = 0; i != tests.length; i++)
        {
            TestResult  res = tests[i].perform();

            if (!res.isSuccessful())
            {
                return res;
            }
        }

        return new SimpleTestResult(true, getName() + ": Okay");
    }

    public static void main(
        String[]    args)
    {
        RC5Test     test = new RC5Test();
        TestResult  result = test.perform();

        System.out.println(result);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy