PageRenderTime 699ms CodeModel.GetById 681ms RepoModel.GetById 0ms app.codeStats 0ms

/js/lib/Socket.IO-node/support/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/BlowFishKeyTest.as

http://github.com/onedayitwillmake/RealtimeMultiplayerNodeJs
ActionScript | 148 lines | 133 code | 3 blank | 12 comment | 1 complexity | f1a80a6cd92cab6228f23252fca0a66c MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, MPL-2.0-no-copyleft-exception, BSD-3-Clause
  1. /**
  2. * BlowFishKeyTest
  3. *
  4. * A test class for BlowFishKey
  5. * Copyright (c) 2007 Henri Torgemane
  6. *
  7. * See LICENSE.txt for full license information.
  8. */
  9. package com.hurlant.crypto.tests
  10. {
  11. import com.hurlant.crypto.symmetric.BlowFishKey;
  12. import com.hurlant.util.Hex;
  13. import flash.utils.ByteArray;
  14. public class BlowFishKeyTest extends TestCase
  15. {
  16. public function BlowFishKeyTest(h:ITestHarness)
  17. {
  18. super(h, "BlowFishKey Test");
  19. runTest(testECB,"BlowFish ECB Test Vectors");
  20. h.endTestCase();
  21. }
  22. /**
  23. * Test vectors from http://www.schneier.com/code/vectors.txt
  24. */
  25. public function testECB():void {
  26. var keys:Array = [
  27. "0000000000000000",
  28. "FFFFFFFFFFFFFFFF",
  29. "3000000000000000",
  30. "1111111111111111",
  31. "0123456789ABCDEF",
  32. "1111111111111111",
  33. "0000000000000000",
  34. "FEDCBA9876543210",
  35. "7CA110454A1A6E57",
  36. "0131D9619DC1376E",
  37. "07A1133E4A0B2686",
  38. "3849674C2602319E",
  39. "04B915BA43FEB5B6",
  40. "0113B970FD34F2CE",
  41. "0170F175468FB5E6",
  42. "43297FAD38E373FE",
  43. "07A7137045DA2A16",
  44. "04689104C2FD3B2F",
  45. "37D06BB516CB7546",
  46. "1F08260D1AC2465E",
  47. "584023641ABA6176",
  48. "025816164629B007",
  49. "49793EBC79B3258F",
  50. "4FB05E1515AB73A7",
  51. "49E95D6D4CA229BF",
  52. "018310DC409B26D6",
  53. "1C587F1C13924FEF",
  54. "0101010101010101",
  55. "1F1F1F1F0E0E0E0E",
  56. "E0FEE0FEF1FEF1FE",
  57. "0000000000000000",
  58. "FFFFFFFFFFFFFFFF",
  59. "0123456789ABCDEF",
  60. "FEDCBA9876543210" ];
  61. var pts:Array = [
  62. "0000000000000000",
  63. "FFFFFFFFFFFFFFFF",
  64. "1000000000000001",
  65. "1111111111111111",
  66. "1111111111111111",
  67. "0123456789ABCDEF",
  68. "0000000000000000",
  69. "0123456789ABCDEF",
  70. "01A1D6D039776742",
  71. "5CD54CA83DEF57DA",
  72. "0248D43806F67172",
  73. "51454B582DDF440A",
  74. "42FD443059577FA2",
  75. "059B5E0851CF143A",
  76. "0756D8E0774761D2",
  77. "762514B829BF486A",
  78. "3BDD119049372802",
  79. "26955F6835AF609A",
  80. "164D5E404F275232",
  81. "6B056E18759F5CCA",
  82. "004BD6EF09176062",
  83. "480D39006EE762F2",
  84. "437540C8698F3CFA",
  85. "072D43A077075292",
  86. "02FE55778117F12A",
  87. "1D9D5C5018F728C2",
  88. "305532286D6F295A",
  89. "0123456789ABCDEF",
  90. "0123456789ABCDEF",
  91. "0123456789ABCDEF",
  92. "FFFFFFFFFFFFFFFF",
  93. "0000000000000000",
  94. "0000000000000000",
  95. "FFFFFFFFFFFFFFFF" ];
  96. var cts:Array = [
  97. "4EF997456198DD78",
  98. "51866FD5B85ECB8A",
  99. "7D856F9A613063F2",
  100. "2466DD878B963C9D",
  101. "61F9C3802281B096",
  102. "7D0CC630AFDA1EC7",
  103. "4EF997456198DD78",
  104. "0ACEAB0FC6A0A28D",
  105. "59C68245EB05282B",
  106. "B1B8CC0B250F09A0",
  107. "1730E5778BEA1DA4",
  108. "A25E7856CF2651EB",
  109. "353882B109CE8F1A",
  110. "48F4D0884C379918",
  111. "432193B78951FC98",
  112. "13F04154D69D1AE5",
  113. "2EEDDA93FFD39C79",
  114. "D887E0393C2DA6E3",
  115. "5F99D04F5B163969",
  116. "4A057A3B24D3977B",
  117. "452031C1E4FADA8E",
  118. "7555AE39F59B87BD",
  119. "53C55F9CB49FC019",
  120. "7A8E7BFA937E89A3",
  121. "CF9C5D7A4986ADB5",
  122. "D1ABB290658BC778",
  123. "55CB3774D13EF201",
  124. "FA34EC4847B268B2",
  125. "A790795108EA3CAE",
  126. "C39E072D9FAC631D",
  127. "014933E0CDAFF6E4",
  128. "F21E9A77B71C49BC",
  129. "245946885754369A",
  130. "6B5C5A9C5D9E0A5A" ];
  131. for (var i:uint=0;i<keys.length;i++) {
  132. var key:ByteArray = Hex.toArray(keys[i]);
  133. var pt:ByteArray = Hex.toArray(pts[i]);
  134. var bf:BlowFishKey = new BlowFishKey(key);
  135. bf.encrypt(pt);
  136. var out:String = Hex.fromArray(pt).toUpperCase();
  137. assert("comparing "+cts[i]+" to "+out, cts[i]==out);
  138. // now go back to plaintext
  139. bf.decrypt(pt);
  140. out = Hex.fromArray(pt).toUpperCase();
  141. assert("comparing "+pts[i]+" to "+out, pts[i]==out);
  142. }
  143. }
  144. }
  145. }