-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsniph.js
38 lines (32 loc) · 1.18 KB
/
sniph.js
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
35
36
37
38
// v0.5 Sniph try 2
const common = require('./lib/common.js')
const sniph_encrypt = require('./lib/encrypt.js')
const sniph_decrypt = require('./lib/decrypt.js')
var passphrase = 'ALICE BOB'
var plaintext = 'Hello world'
var char_set = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.,?!:;\'\"/\\|<>+-=(){}[]`~@#$%^&*1234567890 \n'
// end inputs
var obj = common.passphraseToDimensions(passphrase)
var cols = obj.w // 4-10
var rows = obj.h // 4-10
var depth = obj.d // 4-10
// scale up charset to next "power of two" size
var size = rows * cols
char_set = common.scaleCharset(char_set, size)
var codes = sniph_encrypt(char_set, passphrase, plaintext, depth, rows, cols)
console.log('encrypted codes', codes)
var result = sniph_decrypt(char_set, passphrase, codes, depth, rows, cols)
if (result != plaintext) console.error('DECRYPTION FAILED', result)
// unit test to make sure the conversion works as expected
/*
var maxx = 16
var maxy = 16
for(var i=0; i<257; ++i) {
var test = i % (maxx*maxy)
var arr = convert1d22d(test, maxx, maxy)
var rev = convert2d21d(arr[0], arr[1], maxx, maxy)
if (rev != test) {
console.log('corrupt', i, test, '!=', rev, 'via', arr[0], arr[1])
}
}
*/