PageRenderTime 3ms CodeModel.GetById 0ms 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/CBCMode.as

http://github.com/onedayitwillmake/RealtimeMultiplayerNodeJs
ActionScript | 55 lines | 40 code | 4 blank | 11 comment | 4 complexity | 46d80b9fea6333667bcad804908a6c29 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, MPL-2.0-no-copyleft-exception, BSD-3-Clause
  1. /**
  2. * CBCMode
  3. *
  4. * An ActionScript 3 implementation of the CBC confidentiality mode
  5. * Copyright (c) 2007 Henri Torgemane
  6. *
  7. * See LICENSE.txt for full license information.
  8. */
  9. package com.hurlant.crypto.symmetric
  10. {
  11. import flash.utils.ByteArray;
  12. /**
  13. * CBC confidentiality mode. why not.
  14. */
  15. public class CBCMode extends IVMode implements IMode
  16. {
  17. public function CBCMode(key:ISymmetricKey, padding:IPad = null) {
  18. super(key, padding);
  19. }
  20. public function encrypt(src:ByteArray):void {
  21. padding.pad(src);
  22. var vector:ByteArray = getIV4e();
  23. for (var i:uint=0;i<src.length;i+=blockSize) {
  24. for (var j:uint=0;j<blockSize;j++) {
  25. src[i+j] ^= vector[j];
  26. }
  27. key.encrypt(src, i);
  28. vector.position=0;
  29. vector.writeBytes(src, i, blockSize);
  30. }
  31. }
  32. public function decrypt(src:ByteArray):void {
  33. var vector:ByteArray = getIV4d();
  34. var tmp:ByteArray = new ByteArray;
  35. for (var i:uint=0;i<src.length;i+=blockSize) {
  36. tmp.position=0;
  37. tmp.writeBytes(src, i, blockSize);
  38. key.decrypt(src, i);
  39. for (var j:uint=0;j<blockSize;j++) {
  40. src[i+j] ^= vector[j];
  41. }
  42. vector.position=0;
  43. vector.writeBytes(tmp, 0, blockSize);
  44. }
  45. padding.unpad(src);
  46. }
  47. public function toString():String {
  48. return key.toString()+"-cbc";
  49. }
  50. }
  51. }