PageRenderTime 25ms CodeModel.GetById 20ms 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/symmetric/TripleDESKey.as

http://github.com/onedayitwillmake/RealtimeMultiplayerNodeJs
ActionScript | 88 lines | 63 code | 6 blank | 19 comment | 10 complexity | 55fb535069345a88de9717267bbfff95 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, MPL-2.0-no-copyleft-exception, BSD-3-Clause
  1. /**
  2. * TripleDESKey
  3. *
  4. * An Actionscript 3 implementation of Triple DES
  5. * Copyright (c) 2007 Henri Torgemane
  6. *
  7. * Derived from:
  8. * The Bouncy Castle Crypto package,
  9. * Copyright (c) 2000-2004 The Legion Of The Bouncy Castle
  10. * (http://www.bouncycastle.org)
  11. *
  12. * See LICENSE.txt for full license information.
  13. */
  14. package com.hurlant.crypto.symmetric
  15. {
  16. import flash.utils.ByteArray;
  17. import com.hurlant.util.Memory;
  18. import com.hurlant.util.Hex;
  19. public class TripleDESKey extends DESKey
  20. {
  21. protected var encKey2:Array;
  22. protected var encKey3:Array;
  23. protected var decKey2:Array;
  24. protected var decKey3:Array;
  25. /**
  26. * This supports 2TDES and 3TDES.
  27. * If the key passed is 128 bits, 2TDES is used.
  28. * If the key has 192 bits, 3TDES is used.
  29. * Other key lengths give "undefined" results.
  30. */
  31. public function TripleDESKey(key:ByteArray)
  32. {
  33. super(key);
  34. encKey2 = generateWorkingKey(false, key, 8);
  35. decKey2 = generateWorkingKey(true, key, 8);
  36. if (key.length>16) {
  37. encKey3 = generateWorkingKey(true, key, 16);
  38. decKey3 = generateWorkingKey(false, key, 16);
  39. } else {
  40. encKey3 = encKey;
  41. decKey3 = decKey;
  42. }
  43. }
  44. public override function dispose():void
  45. {
  46. super.dispose();
  47. var i:uint = 0;
  48. if (encKey2!=null) {
  49. for (i=0;i<encKey2.length;i++) { encKey2[i]=0; }
  50. encKey2=null;
  51. }
  52. if (encKey3!=null) {
  53. for (i=0;i<encKey3.length;i++) { encKey3[i]=0; }
  54. encKey3=null;
  55. }
  56. if (decKey2!=null) {
  57. for (i=0;i<decKey2.length;i++) { decKey2[i]=0; }
  58. decKey2=null
  59. }
  60. if (decKey3!=null) {
  61. for (i=0;i<decKey3.length;i++) { decKey3[i]=0; }
  62. decKey3=null;
  63. }
  64. Memory.gc();
  65. }
  66. public override function encrypt(block:ByteArray, index:uint=0):void
  67. {
  68. desFunc(encKey, block,index, block,index);
  69. desFunc(encKey2, block,index, block,index);
  70. desFunc(encKey3, block,index, block,index);
  71. }
  72. public override function decrypt(block:ByteArray, index:uint=0):void
  73. {
  74. desFunc(decKey3, block, index, block, index);
  75. desFunc(decKey2, block, index, block, index);
  76. desFunc(decKey, block, index, block, index);
  77. }
  78. public override function toString():String {
  79. return "3des";
  80. }
  81. }
  82. }