PageRenderTime 25ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/examples/dynamictable/public/phpolait/jsolait/lib/crypto.js

http://pyjamas.googlecode.com/
JavaScript | 81 lines | 80 code | 1 blank | 0 comment | 14 complexity | 76caff02f0d9b4af91fab1164fdde221 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0
  1. Module("crypto", "0.1.2", function(mod){
  2. mod.listEncrypters=function(){
  3. var c=[];
  4. for(var attr in String.prototype){
  5. if(attr.slice(0, 8) == "encrypt_"){
  6. c.push(attr.slice(8));
  7. }
  8. }
  9. return c;
  10. }
  11. mod.listDecrypters=function(){
  12. var c=[];
  13. for(var attr in String.prototype){
  14. if(attr.slice(0, 8) == "decrypt_"){
  15. c.push(attr.slice(8));
  16. }
  17. }
  18. return c;
  19. }
  20. String.prototype.encrypt=function(crydec){
  21. var n = "encrypt_" + crydec;
  22. if(String.prototype[n]){
  23. var args=[];
  24. for(var i=1;i<arguments.length;i++){
  25. args[i-1] = arguments[i];
  26. }
  27. return String.prototype[n].apply(this, args);
  28. }else{
  29. throw new mod.Exception("Decrypter '%s' not found.".format(crydec));
  30. }
  31. }
  32. String.prototype.decrypt=function(crydec){
  33. var n = "decrypt_" + crydec;
  34. if(String.prototype[n]){
  35. var args=[];
  36. for(var i=1;i<arguments.length;i++){
  37. args[i-1] = arguments[i];
  38. }
  39. return String.prototype[n].apply(this, args);
  40. }else{
  41. throw new mod.Exception("Encrypter '%s' not found.".format(crydec));
  42. }
  43. }
  44. String.prototype.encrypt_xor=function(key){
  45. var e=new Array(this.length);
  46. var l=key.length;
  47. for(var i=0;i<this.length;i++){
  48. e[i] = String.fromCharCode(this.charCodeAt(i) ^ key.charCodeAt(i % l));
  49. }
  50. return e.join("");
  51. }
  52. String.prototype.decrypt_xor=String.prototype.encrypt_xor;
  53. String.prototype.encrypt_rc4=function(key){
  54. var sbox = new Array (256);
  55. for (var i=0; i<256; i++){
  56. sbox[i]=i;
  57. }
  58. var j=0;
  59. for (var i=0; i < 256; i++) {
  60. j = (j + sbox[i] + key.charCodeAt(i % key.length)) % 256;
  61. var tmp = sbox[i];
  62. sbox[i] = sbox[j];
  63. sbox[j] = tmp;
  64. }
  65. var i=256;
  66. var j=256;
  67. var rslt=new Array(this.length);
  68. for (var k=0; k < this.length; k++) {
  69. i = (i + 1) % 256;
  70. j = (j + sbox[i]) % 256;
  71. var tmp = sbox[i];
  72. sbox[i] = sbox[j];
  73. sbox[j] = tmp;
  74. t = (sbox[i] + sbox[j]) % 256;
  75. rslt[k] = String.fromCharCode(this.charCodeAt(k) ^ sbox[t]);
  76. }
  77. return rslt.join("");
  78. }
  79. String.prototype.decrypt_rc4=String.prototype.encrypt_rc4;
  80. })