153 lines
5.1 KiB
Markdown
153 lines
5.1 KiB
Markdown
# Encipher and Decipher nKode
|
|
|
|
### Customer Policy
|
|
- max nkode length: 10
|
|
- number of keys: 6
|
|
- properties per key: 9
|
|
- total number of properties: 54
|
|
|
|
### Customer Cipher
|
|
- property key: [50817 32783 33745 35836 30092 4212 15938 64571 58354 41241 3649 38852
|
|
37860 47294 10501 43278 9946 60484 34443 38446 57997 32874 49251 58321
|
|
15849 40891 43566 53732 31357 5248 22060 15762 23773 10428 22850 7975
|
|
11108 23454 32723 40871 6994 35130 41638 13889 6569 20765 56191 37770
|
|
4448 37031 30452 43080 24525 44717]
|
|
- position key: [25392 13634 17753 25555 61290 50870 49934 53104 9796]
|
|
|
|
|
|
---
|
|
|
|
### User Cipher
|
|
- property key: [35724 37130 47630 20125 52673 62248 61979 44917 17470 11483 20317 56084
|
|
34699 49571 32249 15009 43246 57623 21032 62384 61961 34049 1963 5370
|
|
1121 47700 26633 59166 16526 38173 56846 41594 54438 8714 46049 25028
|
|
38681 2017 39749 42164 38277 19216 23760 35115 23020 18954 26604 50262
|
|
21588 62239 30226 58722 12644 39141]
|
|
- passcode key: [51522 14440 21036 1484 4829 51359 61560 41543 23848 29080]
|
|
- combined position key: [14972 5803 54986 46940 19674 32943 38431 42194 29083]
|
|
- mask key: [15948 8251 52095 4511 25902 21701 15340 4458 15137 44295]
|
|
|
|
#### Combined Postion Key
|
|
```mermaid
|
|
block-beta
|
|
columns 2
|
|
user_pos["user position key:\n[22860 9193 37779 54415 41904 17945 21777 27554 22495]"]
|
|
customer_pos["customer position key:\n[25392 13634 17753 25555 61290 50870 49934 53104 9796]"]
|
|
space:2
|
|
xor(("XOR")):2
|
|
user_pos --> xor
|
|
customer_pos --> xor
|
|
space:2
|
|
comb_pos["combined position key\n[14972 5803 54986 46940 19674 32943 38431 42194 29083]"]:2
|
|
xor --> comb_pos
|
|
```
|
|
|
|
### User Keypad
|
|
- keypad:
|
|
- user passcode indices: [22, 6, 38, 21]
|
|
|
|
### nKode Cipher
|
|
|
|
#### Passcode Hash
|
|
```mermaid
|
|
block-beta
|
|
columns 2
|
|
cprop["customer_property_key\n[50817 32783 33745 35836 30092 4212 15938 64571 58354 41241 3649 38852
|
|
37860 47294 10501 43278 9946 60484 34443 38446 57997 32874 49251 58321
|
|
15849 40891 43566 53732 31357 5248 22060 15762 23773 10428 22850 7975
|
|
11108 23454 32723 40871 6994 35130 41638 13889 6569 20765 56191 37770
|
|
4448 37031 30452 43080 24525 44717]"]
|
|
uprop["user_property_key\n[35724 37130 47630 20125 52673 62248 61979 44917 17470 11483 20317 56084
|
|
34699 49571 32249 15009 43246 57623 21032 62384 61961 34049 1963 5370
|
|
1121 47700 26633 59166 16526 38173 56846 41594 54438 8714 46049 25028
|
|
38681 2017 39749 42164 38277 19216 23760 35115 23020 18954 26604 50262
|
|
21588 62239 30226 58722 12644 39141]"]
|
|
space:2
|
|
xor1(("XOR")):2
|
|
cprop --> xor1
|
|
uprop --> xor1
|
|
space:2
|
|
prop["combined_property_key\n[19725 4357 14815 50529 47181 58204 52313 21326 42956 36290 16668 19664
|
|
5231 31005 21756 37807 36404 3411 54435 26014 4228 1387 51144 63275
|
|
14728 9711 49703 14074 15091 33181 34850 40936 34939 2742 60067 32483
|
|
48253 23679 58518 15123 36567 49706 65142 49002 16453 6935 48275 22492
|
|
17716 25528 230 19754 28329 13896]"]
|
|
xor1 --> prop
|
|
pass["user_passcode_indices\n[22, 6, 38, 21]"]
|
|
space:2
|
|
sel(("select\properties")):2
|
|
pass --> sel
|
|
prop --> sel
|
|
space:2
|
|
passcode["user passcode properties:\n[51144 52313 58518 1387]"]:2
|
|
sel --> passcode
|
|
space:2
|
|
pad["zero pad to\nmax nkode length: 10"]:2
|
|
passcode -->pad
|
|
space:2
|
|
paddedpasscode["padded passcode:\n[51144 52313 58518 1387 0 0 0 0 0 0]"]
|
|
pad --> paddedpasscode
|
|
passkey["passcode key:\n[51522 14440 21036 1484 4829 51359 61560 41543 23848 29080]"]
|
|
space:2
|
|
xor2(("XOR")):2
|
|
passkey --> xor2
|
|
paddedpasscode --> xor2
|
|
space:2
|
|
cipheredpass["ciphered passcode:\n[ 3722 62513 46778 167 4829 51359 61560 41543 23848 29080]"]:2
|
|
xor2 --> cipheredpass
|
|
space:2
|
|
hash(("hash")):2
|
|
cipheredpass --> hash
|
|
space:2
|
|
cipheredhashed["hashed ciphered passcode:\n$2b$12$AQRZP88momhTaKGYaPzdiuBybg7V49SiZ8y9PQMoT0plZrEsbYO.K"]:2
|
|
hash --> cipheredhashed
|
|
```
|
|
|
|
#### Mask Encipher
|
|
```mermaid
|
|
block-beta
|
|
columns 3
|
|
passcode_idx["passcode indices:\n[22, 6, 38, 21]"]
|
|
comb_pos["combined position key:\n[14972 5803 54986 46940 19674 32943 38431 42194 29083]"]
|
|
cust_pos["customer position key:\n[25392 13634 17753 25555 61290 50870 49934 53104 9796]"]
|
|
|
|
space:3
|
|
propidx(["Get Position Idx:\nmap each to element mod props_per_key"])
|
|
passcode_idx-->propidx
|
|
space:1
|
|
xor1(("XOR"))
|
|
comb_pos --> xor1
|
|
cust_pos --> xor1
|
|
|
|
space:3
|
|
passcode_position_idx["passcode poition indices:\n[4, 6, 2, 3]"]
|
|
propidx --> passcode_position_idx
|
|
|
|
space:5
|
|
pad1(("Pad with\nrandom indices"))
|
|
passcode_position_idx --> pad1
|
|
|
|
space:5
|
|
posidx["Padded Passcode Position Indices:\n[4, 6, 2, 3, 7, 1, 8, 0, 5, 4]"]
|
|
pad1 --> posidx
|
|
space:1
|
|
user_pos["user position key:\n[22860 9193 37779 54415 41904 17945 21777 27554 22495]"]
|
|
xor1 --> user_pos
|
|
|
|
space:4
|
|
sel(("select positions"))
|
|
user_pos --> sel
|
|
posidx --> sel
|
|
space:5
|
|
passcode_pos["passcode positions:\n[41904 21777 37779 54415 27554 9193 22495 22860 17945 41904]"]
|
|
sel --> passcode_pos
|
|
mask_key["mask key\n[15948 8251 52095 4511 25902 21701 15340 4458 15137 44295]"]
|
|
space:4
|
|
xor2(("XOR"))
|
|
mask_key --> xor2
|
|
passcode_pos --> xor2
|
|
space:5
|
|
mask["enciphered mask:\n [40444 29994 22764 50448 3724 30508 27699 18470 32056 3767]"]
|
|
xor2 --> mask
|
|
```
|