Advertisement
Guest User

js

a guest
Dec 21st, 2011
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 KB | None | 0 0
  1. var in_a, in_b, in_ga, in_gb, in_p, in_g;
  2. var in_put_a, input_b, out_put, out_gab;
  3. var but_a, but_b, but_ra, but_rb, but_rnda, but_rndb, but_enc, but_dec;
  4.  
  5. var TheP = str2bigInt("124325339146889384540494091085456630009856882741872806181731279018491820800119460022367403769795008250021191767583423221479185609066059226301250167164084041279837566626881119772675984258163062926954046545485368458404445166682380071370274810671501916789361956272226105723317679562001235501455748016154805420913", 10, 1024, 64);
  6. var TheG = str2bigInt("115740200527109164239523414760926155534485715860090261532154107313946218459149402375178179458041461723723231563839316251515439564315555249353831328479173170684416728715378198172203100328308536292821245983596065287318698169565702979765910089654821728828592422299160041156491980943427556153020487552135890973413", 10, 1024, 64);
  7.  
  8. var limit = int2bigInt(2, 8, 1);
  9. var tfs = int2bigInt(256, 8, 1);
  10.  
  11. function Init() {
  12. if (document.getElementById) {
  13. in_a = document.getElementById("in_a");
  14. in_b = document.getElementById("in_b");
  15. in_ga = document.getElementById("in_ga");
  16. in_gb = document.getElementById("in_gb");
  17. in_g = document.getElementById("in_g");
  18. in_p = document.getElementById("in_p");
  19.  
  20. in_put_a = document.getElementById("in_put_a");
  21. in_put_b = document.getElementById("in_put_b");
  22. out_put = document.getElementById("out_put");
  23. out_gab = document.getElementById("out_gab");
  24.  
  25. but_a = document.getElementById("go_a");
  26. but_b = document.getElementById("go_b");
  27. but_ra = document.getElementById("but_ra");
  28. but_rb = document.getElementById("but_rb");
  29. but_rnda = document.getElementById("but_rnda");
  30. but_rndb = document.getElementById("but_rndb");
  31. but_enc = document.getElementById("go_enc");
  32. but_dec = document.getElementById("go_dec");
  33. }
  34.  
  35. if (but_a) {
  36. but_a.addEventListener("click", runAlice, false);
  37. }
  38. if (but_b) {
  39. but_b.addEventListener("click", runBob, false);
  40. }
  41. if (but_ra) {
  42. but_ra.addEventListener("click", fillAliceInput, false);
  43. }
  44. if (but_rb) {
  45. but_rb.addEventListener("click", fillBobInput, false);
  46. }
  47.  
  48. if (but_rnda && in_a) {
  49. but_rnda.addEventListener("click", function(){ randomBigNum(in_a); }, false);
  50. }
  51. if (but_rndb && in_b) {
  52. but_rndb.addEventListener("click", function(){ randomBigNum(in_b); }, false);
  53. }
  54.  
  55. if (but_enc) {
  56. but_enc.addEventListener("click", Encrypt, false);
  57. }
  58.  
  59. if (but_dec) {
  60. but_dec.addEventListener("click", Decrypt, false);
  61. }
  62.  
  63. in_g.value = bigInt2str(TheG, 10);
  64. in_p.value = bigInt2str(TheP, 10);
  65. }
  66.  
  67. window.addEventListener("load", Init, false);
  68.  
  69. function ExpMod(Base, Expo, Modu) {
  70. return powMod(Base, Expo, Modu);
  71. }
  72.  
  73. function fillAliceInput(ev) {
  74. in_gb.value = in_put_a.value;
  75. out_gab.value = bigInt2str(compute(in_gb.value, in_p.value, in_a.value), 10);
  76. }
  77.  
  78. function fillBobInput(ev) {
  79. in_ga.value = in_put_b.value;
  80. }
  81.  
  82. function randomBigNum(elem)
  83. {
  84. elem.value = bigInt2str(randBigInt(512, 1), 10);
  85. }
  86.  
  87. function compute(gx, px, nx) {
  88. var g = str2bigInt(gx, 10, 1024, 64);
  89. var p = str2bigInt(px, 10, 1024, 64);
  90. var n = str2bigInt(nx, 10, 1024, 64);
  91.  
  92. //return res = (g.pow(n)).mod(p);
  93. return ExpMod(g, n, p);
  94. }
  95.  
  96. function runAlice(ev) {
  97. in_ga.value = bigInt2str(compute(in_g.value, in_p.value, in_a.value), 10);
  98. out_put.value = in_ga.value;
  99. }
  100.  
  101. function runBob(ev) {
  102. in_gb.value = bigInt2str(compute(in_g.value, in_p.value, in_b.value), 10);
  103. out_gab.value = bigInt2str(compute(in_ga.value, in_p.value, in_b.value), 10);
  104. out_put.value = in_gb.value;
  105. }
  106.  
  107. function Encrypt(ev) {
  108. var msg = document.getElementById("in_pt").value;
  109. var secret = str2bigInt(out_gab.value, 10, 1024, 64);
  110.  
  111. var r = str2bigInt("0", 10, 1024, 64);
  112. var pad = 100 - msg.length;
  113.  
  114. for (var i = 0; i < 100; ++i) {
  115. var v = ((i < msg.length) ? msg.charCodeAt(i) : pad);
  116. r = mult(r, tfs);
  117. var b = modInt(secret, 256);
  118. r = addInt(r, v ^ b);
  119. rightShift_(secret, 8);
  120. }
  121.  
  122. document.getElementById("in_et").value = bigInt2str(r, 10);
  123. }
  124.  
  125. function Decrypt(ev) {
  126. var msg = str2bigInt(document.getElementById("in_et").value, 10, 1024, 64);
  127. var secret = str2bigInt(out_gab.value, 10, 1024, 64);
  128.  
  129. var raw = Object();
  130. for (var i = 0; i < 100; ++i) {
  131. raw[i] = modInt(msg, 256);
  132. rightShift_(msg, 8);
  133. }
  134.  
  135. var r = "";
  136. var pad;
  137. for (var i = 0; i < 100; ++i) {
  138. pad = raw[100 - i - 1] ^ modInt(secret, 256);
  139. r += String.fromCharCode(pad);
  140. rightShift_(secret, 8);
  141. }
  142.  
  143. document.getElementById("in_pt").value = r.substring(0, 100 - pad);
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement