-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
/
entryHashing.ts
34 lines (29 loc) · 1011 Bytes
/
entryHashing.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const CHAR_CODE_A = 97;
const CHAR_CODE_0 = 48;
function intToHex(num: number): string {
if (num < 10) return String.fromCharCode(CHAR_CODE_0 + num);
else return String.fromCharCode(CHAR_CODE_A + (num - 10));
}
export function Uint8ArrayToHexString(buffer: Uint8Array): string {
let str = '';
// hex conversion - 2 chars per 8 bit component
for (let i = 0; i < buffer.length; i++) {
const num = buffer[i];
// big endian conversion, but whatever
str += intToHex(num >> 4);
str += intToHex(num & 0xf);
}
return str;
}
export function randomUint8Array(len: number): Uint8Array {
const buffer = new Uint8Array(len);
for (let i = 0; i < buffer.length; i++) buffer[i] = Math.random() * (2 << 8);
return buffer;
}
export function Uint8ArrayXor(to: Uint8Array, from: Uint8Array): Uint8Array {
for (let i = 0; i < to.length; i++) to[i] = to[i] ^ from[i];
return to;
}
export function randomHexString(len: number): string {
return Uint8ArrayToHexString(randomUint8Array(Math.floor(len / 2)));
}