4 * A test class for BlowFishKey
\r
5 * Copyright (c) 2007 Henri Torgemane
\r
7 * See LICENSE.txt for full license information.
\r
9 package com.hurlant.crypto.tests
\r
11 import com.hurlant.crypto.symmetric.BlowFishKey;
\r
12 import com.hurlant.util.Hex;
\r
13 import flash.utils.ByteArray;
\r
15 public class BlowFishKeyTest extends TestCase
\r
17 public function BlowFishKeyTest(h:ITestHarness)
\r
19 super(h, "BlowFishKey Test");
\r
20 runTest(testECB,"BlowFish ECB Test Vectors");
\r
25 * Test vectors from http://www.schneier.com/code/vectors.txt
\r
27 public function testECB():void {
\r
62 "FEDCBA9876543210" ];
\r
97 "FFFFFFFFFFFFFFFF" ];
\r
100 "51866FD5B85ECB8A",
\r
101 "7D856F9A613063F2",
\r
102 "2466DD878B963C9D",
\r
103 "61F9C3802281B096",
\r
104 "7D0CC630AFDA1EC7",
\r
105 "4EF997456198DD78",
\r
106 "0ACEAB0FC6A0A28D",
\r
107 "59C68245EB05282B",
\r
108 "B1B8CC0B250F09A0",
\r
109 "1730E5778BEA1DA4",
\r
110 "A25E7856CF2651EB",
\r
111 "353882B109CE8F1A",
\r
112 "48F4D0884C379918",
\r
113 "432193B78951FC98",
\r
114 "13F04154D69D1AE5",
\r
115 "2EEDDA93FFD39C79",
\r
116 "D887E0393C2DA6E3",
\r
117 "5F99D04F5B163969",
\r
118 "4A057A3B24D3977B",
\r
119 "452031C1E4FADA8E",
\r
120 "7555AE39F59B87BD",
\r
121 "53C55F9CB49FC019",
\r
122 "7A8E7BFA937E89A3",
\r
123 "CF9C5D7A4986ADB5",
\r
124 "D1ABB290658BC778",
\r
125 "55CB3774D13EF201",
\r
126 "FA34EC4847B268B2",
\r
127 "A790795108EA3CAE",
\r
128 "C39E072D9FAC631D",
\r
129 "014933E0CDAFF6E4",
\r
130 "F21E9A77B71C49BC",
\r
131 "245946885754369A",
\r
132 "6B5C5A9C5D9E0A5A" ];
\r
134 for (var i:uint=0;i<keys.length;i++) {
\r
135 var key:ByteArray = Hex.toArray(keys[i]);
\r
136 var pt:ByteArray = Hex.toArray(pts[i]);
\r
137 var bf:BlowFishKey = new BlowFishKey(key);
\r
139 var out:String = Hex.fromArray(pt).toUpperCase();
\r
140 assert("comparing "+cts[i]+" to "+out, cts[i]==out);
\r
141 // now go back to plaintext
\r
143 out = Hex.fromArray(pt).toUpperCase();
\r
144 assert("comparing "+pts[i]+" to "+out, pts[i]==out);
\r