Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80552 views
1
function 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
}
16
exports.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
}
25
function 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
}
35
36