corrade-nucleus-nucleons – Blame information for rev 2
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
2 | office | 1 | /* |
2 | CryptoJS v3.1.2 |
||
3 | code.google.com/p/crypto-js |
||
4 | (c) 2009-2013 by Jeff Mott. All rights reserved. |
||
5 | code.google.com/p/crypto-js/wiki/License |
||
6 | */ |
||
7 | (function () { |
||
8 | // Shortcuts |
||
9 | var C = CryptoJS; |
||
10 | var C_lib = C.lib; |
||
11 | var StreamCipher = C_lib.StreamCipher; |
||
12 | var C_algo = C.algo; |
||
13 | |||
14 | /** |
||
15 | * RC4 stream cipher algorithm. |
||
16 | */ |
||
17 | var RC4 = C_algo.RC4 = StreamCipher.extend({ |
||
18 | _doReset: function () { |
||
19 | // Shortcuts |
||
20 | var key = this._key; |
||
21 | var keyWords = key.words; |
||
22 | var keySigBytes = key.sigBytes; |
||
23 | |||
24 | // Init sbox |
||
25 | var S = this._S = []; |
||
26 | for (var i = 0; i < 256; i++) { |
||
27 | S[i] = i; |
||
28 | } |
||
29 | |||
30 | // Key setup |
||
31 | for (var i = 0, j = 0; i < 256; i++) { |
||
32 | var keyByteIndex = i % keySigBytes; |
||
33 | var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff; |
||
34 | |||
35 | j = (j + S[i] + keyByte) % 256; |
||
36 | |||
37 | // Swap |
||
38 | var t = S[i]; |
||
39 | S[i] = S[j]; |
||
40 | S[j] = t; |
||
41 | } |
||
42 | |||
43 | // Counters |
||
44 | this._i = this._j = 0; |
||
45 | }, |
||
46 | |||
47 | _doProcessBlock: function (M, offset) { |
||
48 | M[offset] ^= generateKeystreamWord.call(this); |
||
49 | }, |
||
50 | |||
51 | keySize: 256/32, |
||
52 | |||
53 | ivSize: 0 |
||
54 | }); |
||
55 | |||
56 | function generateKeystreamWord() { |
||
57 | // Shortcuts |
||
58 | var S = this._S; |
||
59 | var i = this._i; |
||
60 | var j = this._j; |
||
61 | |||
62 | // Generate keystream word |
||
63 | var keystreamWord = 0; |
||
64 | for (var n = 0; n < 4; n++) {> |
||
65 | < 4; n++) { i = (i + 1) % 256;> |
||
66 | < 4; n++) { j = (j + S[i]) % 256;> |
||
67 | |||
68 | < 4; n++) { // Swap> |
||
69 | < 4; n++) { var t = S[i];> |
||
70 | < 4; n++) { S[i] = S[j];> |
||
71 | < 4; n++) { S[j] = t;> |
||
72 | |||
73 | < 4; n++) { keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);><>> |
||
74 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); }><>> |
||
75 | |||
76 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); // Update counters><>> |
||
77 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); this._i = i;><>> |
||
78 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); this._j = j;><>> |
||
79 | |||
80 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); return keystreamWord;><>> |
||
81 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); }><>> |
||
82 | |||
83 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); /**><>> |
||
84 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * Shortcut functions to the cipher's object interface.><>> |
||
85 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); *><>> |
||
86 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * @example><>> |
||
87 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); *><>> |
||
88 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);><>> |
||
89 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);><>> |
||
90 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); */><>> |
||
91 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); C.RC4 = StreamCipher._createHelper(RC4);><>> |
||
92 | |||
93 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); /**><>> |
||
94 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * Modified RC4 stream cipher algorithm.><>> |
||
95 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); */><>> |
||
96 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); var RC4Drop = C_algo.RC4Drop = RC4.extend({><>> |
||
97 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); /**><>> |
||
98 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * Configuration options.><>> |
||
99 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); *><>> |
||
100 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * @property {number} drop The number of keystream words to drop. Default 192><>> |
||
101 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); */><>> |
||
102 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); cfg: RC4.cfg.extend({><>> |
||
103 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); drop: 192><>> |
||
104 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); }),><>> |
||
105 | |||
106 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); _doReset: function () {><>> |
||
107 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); RC4._doReset.call(this);><>> |
||
108 | |||
109 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); // Drop><>> |
||
110 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); for (var i = this.cfg.drop; i > 0; i--) {><>> |
||
111 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); generateKeystreamWord.call(this);><>> |
||
112 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); }><>> |
||
113 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); }><>> |
||
114 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); });><>> |
||
115 | |||
116 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); /**><>> |
||
117 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * Shortcut functions to the cipher's object interface.><>> |
||
118 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); *><>> |
||
119 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * @example><>> |
||
120 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); *><>> |
||
121 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);><>> |
||
122 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);><>> |
||
123 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); */><>> |
||
124 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8); C.RC4Drop = StreamCipher._createHelper(RC4Drop);><>> |
||
125 | < 4; n++) {<< (24 - n * 8);< (24 - n * 8);}());><>> |