UNPKG

842 BJavaScriptView Raw
1
2function encryptByte(self, byte, decrypt) {
3 var pad;
4 var i = -1;
5 var len = 8;
6 var out = 0;
7 var bit, value;
8 while (++i < len) {
9 pad = self._cipher.encryptBlock(self._prev);
10 bit = (byte & (1 << (7-i))) ? 0x80:0;
11 value = pad[0] ^ bit;
12 out += ((value&0x80) >> (i%8));
13 self._prev = shiftIn(self._prev, decrypt?bit:value);
14 }
15 return out;
16}
17exports.encrypt = function (self, chunk, decrypt) {
18 var len = chunk.length;
19 var out = new Buffer(len);
20 var i = -1;
21 while (++i < len) {
22 out[i] = encryptByte(self, chunk[i], decrypt);
23 }
24 return out;
25};
26function shiftIn(buffer, value) {
27 var len = buffer.length;
28 var i = -1;
29 var out = new Buffer(buffer.length);
30 buffer = Buffer.concat([buffer, new Buffer([value])]);
31 while(++i < len) {
32 out[i] = buffer[i]<<1 | buffer[i+1]>>(7);
33 }
34 return out;
35}
\No newline at end of file