UNPKG

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