Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.bouncycastle.crypto.test;
  
Shacal2 tester - vectors from https://www.cosic.esat.kuleuven.be/nessie/testvectors/
 
 public class Shacal2Test
     extends CipherTest
 {
     static SimpleTest[]  tests =
             {
                 // set 8.0
                 new BlockCipherVectorTest(0, new Shacal2Engine(),
                         new KeyParameter(Hex.decode("000102030405060708090A0B0C0D0E0F" +
                             "101112131415161718191A1B1C1D1E1F" +
                             "202122232425262728292A2B2C2D2E2F" +
                             "303132333435363738393A3B3C3D3E3F")),
                         "98BCC10405AB0BFC686BECECAAD01AC1" +
                         "9B452511BCEB9CB094F905C51CA45430",
                         "00112233445566778899AABBCCDDEEFF" +
                         "102132435465768798A9BACBDCEDFE0F"),
                 // set 8.1
                 new BlockCipherVectorTest(1, new Shacal2Engine(),
                         new KeyParameter(Hex.decode("2BD6459F82C5B300952C49104881FF48" +
                             "2BD6459F82C5B300952C49104881FF48" +
                             "2BD6459F82C5B300952C49104881FF48" +
                             "2BD6459F82C5B300952C49104881FF48")),
                             "481F122A75F2C4C3395140B5A951EBBA" +
                             "06D96BDFD9D8FF4FB59CBD1287808D5A",
                             "EA024714AD5C4D84EA024714AD5C4D84" +
                             "EA024714AD5C4D84EA024714AD5C4D84"),
                  // 7.255
                 new BlockCipherVectorTest(2, new Shacal2Engine(),
                         new KeyParameter(Hex.decode("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" +
                             "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" +
                             "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" +
                             "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")),
                             "94FEDFF2A0CFE3C983D340C88D73F8CF" +
                             "4B79FC581797EC10B27D4DA1B51E1BC7",
                             "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" +
                             "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"),
                 // 7.100
                 new BlockCipherVectorTest(3, new Shacal2Engine(),
                         new KeyParameter(Hex.decode("64646464646464646464646464646464" +
                             "64646464646464646464646464646464" +
                             "64646464646464646464646464646464" +
                             "64646464646464646464646464646464")),
                             "6643CB84B3B3F126F5E50959EF4CE73D" +
                             "B8500918ABE1056368DB06CA8C1C0D45",
                             "64646464646464646464646464646464" +
                             "64646464646464646464646464646464"),
                 // 7.50
                 new BlockCipherVectorTest(4, new Shacal2Engine(),
                         new KeyParameter(Hex.decode("32323232323232323232323232323232" +
                             "32323232323232323232323232323232" +
                             "32323232323232323232323232323232" +
                             "32323232323232323232323232323232")),
                             "92E937285AB11FE3561542C43C918966" +
                             "971DE722E9B9D38BD69EAC77899DCF81",
                             "32323232323232323232323232323232" +
                             "32323232323232323232323232323232"),
                 // 7.0
                 new BlockCipherVectorTest(5, new Shacal2Engine(),
                         new KeyParameter(Hex.decode("00000000000000000000000000000000" +
                             "00000000000000000000000000000000" +
                             "00000000000000000000000000000000" +
                             "00000000000000000000000000000000")),
                             "F8C9259FA4F5D787B570AFA9219166A6" +
                             "3636FC5C30AC289155D0CC4FFCB4B03D",
                             "00000000000000000000000000000000" +
                             "00000000000000000000000000000000"),
                 // 6.255
                 new BlockCipherVectorTest(6, new Shacal2Engine(),
                         new KeyParameter(Hex.decode("00000000000000000000000000000000" +
                             "00000000000000000000000000000000" +
                             "00000000000000000000000000000000" +
                             "00000000000000000000000000000000")),
                             "F4E976DF0172CD961D4C8D466A12F676" +
                             "5B9089046E747CD2A41BF43C18A8328E",
                             "00000000000000000000000000000000" +
                             "00000000000000000000000000000001"),
                 // 6.100
                 new BlockCipherVectorTest(7, new Shacal2Engine(),
                     new KeyParameter(Hex.decode("00000000000000000000000000000000" +
                         "00000000000000000000000000000000" +
                         "00000000000000000000000000000000" +
                         "00000000000000000000000000000000")),
                         "3B929F0597E21D0076EC399D21B67713" +
                         "B40E3AD559704219A26A3380212D5AD6",
                         "00000000000000000000000008000000" +
                         "00000000000000000000000000000000"),
 
                 // 6.0
                new BlockCipherVectorTest(8, new Shacal2Engine(),
                    new KeyParameter(Hex.decode("00000000000000000000000000000000" +
                        "00000000000000000000000000000000" +
                        "00000000000000000000000000000000" +
                        "00000000000000000000000000000000")),
                        "43A0DAD8307F19FBBCF166FE20BAC075" +
                        "C56FF14042550E472094B042BE5963EE",
                        "80000000000000000000000000000000" +
                        "00000000000000000000000000000000"),
            };
    Shacal2Test()
    {
        super(new Shacal2Engine(), new KeyParameter(new byte[16]));
    }
    public void performTest()
        throws Exception
    {
        super.performTest();
        // 1.0
        iteratedTest(0,
            Hex.decode("80000000000000000000000000000000" +
            "00000000000000000000000000000000" +
            "00000000000000000000000000000000" +
            "00000000000000000000000000000000"),
            Hex.decode("00000000000000000000000000000000" +
            "00000000000000000000000000000000"),
            Hex.decode("361AB6322FA9E7A7BB23818D839E01BD" +
                "DAFDF47305426EDD297AEDB9F6202BAE"),
            Hex.decode("226A582DE04383D0F3E7DE655DD848AC" +
            "3E14CCFB4E76F7B7069879F67C4D5420"),
            Hex.decode("B05D5A18C0712082CFF5BA9DBBCD7269" +
            "114FC3DF83B42DAC306D95BBC473D839"));
        // 1.100
        iteratedTest(1,
            Hex.decode("00000000000000000000000008000000" +
                "00000000000000000000000000000000" +
                "00000000000000000000000000000000" +
                "00000000000000000000000000000000"),
            Hex.decode("00000000000000000000000000000000" +
            "00000000000000000000000000000000"),
            Hex.decode("F703282E54592A5617E10618027BB67F" +
                "639E43A90767150D8B7F5E83054B3CBD"),
            Hex.decode("3B442692B579485B8BA2F92CE3B90DE7" +
                "D2EA03D8B3C8E7BE7BF6415F798EED90"),
            Hex.decode("331B9B65F06230380BBEECFBFBA94BCF" +
                "92AF6341F815D7651F996144A5377263"));
    }
    private void iteratedTest(int indexbyte[] keybyte[] plainbyte[] cipherbyte[] cipher100byte[] cipher1000)
    {
        BlockCipher engine = new Shacal2Engine();
        engine.init(truenew KeyParameter(key));
        byte[] buf = new byte[plain.length];
        System.arraycopy(plain, 0, buf, 0, plain.length);
        engine.processBlock(buf, 0, buf, 0);
        if (!Arrays.areEqual(cipherbuf))
        {
            fail(index + " single count failed");
        }
        for (int i = 1; i != 100; i++)
        {
            engine.processBlock(buf, 0, buf, 0);
        }
        if (!Arrays.areEqual(cipher100buf))
        {
            fail(index + " 100 count failed");
        }
        for (int i = 100; i != 1000; i++)
        {
            engine.processBlock(buf, 0, buf, 0);
        }
        if (!Arrays.areEqual(cipher1000buf))
        {
            fail(index + " 1000 count failed");
        }
    }
    public String getName()
    {
        return "Shacal2";
    }
    public static void main(
        String[]    args)
    {
        runTest(new Shacal2Test());
    }
New to GrepCode? Check out our FAQ X