8.1 KiB
8.1 KiB
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: [ 7528 63893 43548 25423 47744 42591 13947 15495 44997 9610 32248 3295 37638 6583 51113 60339 43861 22578 25507 20049 10766 50355 36708 37036 12276 25874 63870 49205 70 53112 40483 39973 24671 4447 24361 43982 1997 23736 6951 9733 7407 48242 57341 7624 5578 22071 51177 20155 2441 15688 7417 935 33982 43009]
- position key: [41987 59995 38795 29405 53271 32296 44523 10502 49338]
User Cipher
- property key: [25869 62495 1734 362 37984 51592 32568 34493 13441 35472 33999 41683 20426 4369 47735 37538 8392 1425 8176 40966 37766 22326 21576 20608 6581 21051 52337 10975 19283 32306 52352 6318 26386 36937 16351 38760 36505 9636 58306 38636 14299 36502 59745 33866 61255 12802 63463 64177 38614 28129 16937 786 31611 60757]
- passcode key: [28207 53281 58835 9812 48933 51588 25408 62022 36721 9334]
- combined position key: [60340 19752 2334 9189 29138 61771 17595 21364 54614]
- mask key: [43734 31472 30293 34641 24055 5782 14606 48388 2666 19217]
Combined Postion Key
block-beta
columns 2
user_pos["user position key:\n[20407 42867 40597 20792 41413 36707 59728 31346 5612]"]
customer_pos["customer position key:\n[41987 59995 38795 29405 53271 32296 44523 10502 49338]"]
space:2
xor(("XOR")):2
user_pos --> xor
customer_pos --> xor
space:2
comb_pos["combined position key\n[60340 19752 2334 9189 29138 61771 17595 21364 54614]"]:2
xor --> comb_pos
User Keypad
- keypad:
- user passcode indices: [37, 38, 40, 10]
nKode Cipher
Passcode Hash
block-beta
columns 2
cprop["customer_property_key\n[ 7528 63893 43548 25423 47744 42591 13947 15495 44997 9610 32248 3295
37638 6583 51113 60339 43861 22578 25507 20049 10766 50355 36708 37036
12276 25874 63870 49205 70 53112 40483 39973 24671 4447 24361 43982
1997 23736 6951 9733 7407 48242 57341 7624 5578 22071 51177 20155
2441 15688 7417 935 33982 43009]"]
uprop["user_property_key\n[25869 62495 1734 362 37984 51592 32568 34493 13441 35472 33999 41683
20426 4369 47735 37538 8392 1425 8176 40966 37766 22326 21576 20608
6581 21051 52337 10975 19283 32306 52352 6318 26386 36937 16351 38760
36505 9636 58306 38636 14299 36502 59745 33866 61255 12802 63463 64177
38614 28129 16937 786 31611 60757]"]
space:2
xor1(("XOR")):2
cprop --> xor1
uprop --> xor1
space:2
prop["combined_property_key\n[30821 3466 44250 25125 12000 28631 18755 47674 39748 44826 63799 44556
56524 2214 32222 30993 35741 23971 31827 61015 47496 37765 56108 49196
13889 14121 13583 60138 19221 45386 21155 33931 1869 33046 24822 15526
35156 31004 63717 45289 11060 13028 13980 39298 64141 25653 12302 46090
40799 20649 24272 181 65477 17748]"]
xor1 --> prop
pass["user_passcode_indices\n[37, 38, 40, 10]"]
space:2
sel(("select\nproperties")):2
pass --> sel
prop --> sel
space:2
passcode["user passcode properties:\n[31004 63717 11060 63799]"]:2
sel --> passcode
space:2
pad["zero pad to\nmax nkode length: 10"]:2
passcode -->pad
space:2
paddedpasscode["padded passcode:\n[31004 63717 11060 63799 0 0 0 0 0 0]"]
pad --> paddedpasscode
passkey["passcode key:\n[28207 53281 58835 9812 48933 51588 25408 62022 36721 9334]"]
space:2
xor2(("XOR")):2
passkey --> xor2
paddedpasscode --> xor2
space:2
cipheredpass["ciphered passcode:\n[ 5939 10436 52967 57187 48933 51588 25408 62022 36721 9334]"]:2
xor2 --> cipheredpass
space:2
hash(("hash")):2
cipheredpass --> hash
space:2
cipheredhashed["hashed ciphered passcode:\n$2b$12$am68CvhXvNZFJE1qsmLSL.gC5I.cykt7LbisLcuUNkoFZ18vV1DPO"]:2
hash --> cipheredhashed
Mask Encipher
block-beta
columns 3
passcode_idx["passcode indices:\n[37, 38, 40, 10]"]
comb_pos["combined position key:\n[60340 19752 2334 9189 29138 61771 17595 21364 54614]"]
cust_pos["customer position key:\n[41987 59995 38795 29405 53271 32296 44523 10502 49338]"]
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[1, 2, 4, 1]"]
propidx --> passcode_position_idx
space:5
pad1(("Pad with\nrandom indices"))
passcode_position_idx --> pad1
space:5
posidx["Padded Passcode Position Indices:\n[1, 2, 4, 1, 4, 6, 4, 8, 4, 2]"]
pad1 --> posidx
space:1
user_pos["user position key:\n[20407 42867 40597 20792 41413 36707 59728 31346 5612]"]
xor1 --> user_pos
space:4
sel(("select positions"))
user_pos --> sel
posidx --> sel
space:5
passcode_pos["ordered user passcode positions:\n[42867 40597 41413 42867 41413 59728 41413 5612 41413 40597]"]
sel --> passcode_pos
mask_key["mask key\n[43734 31472 30293 34641 24055 5782 14606 48388 2666 19217]"]
space:4
xor2(("XOR"))
mask_key --> xor2
passcode_pos --> xor2
space:5
mask["enciphered mask:\n [ 3493 58469 55184 8226 64562 65478 39115 43240 43951 54660]"]
xor2 --> mask
Validate nKode
block-beta
columns 3
selected_keys["selected keys:\n[4, 0, 4, 2]"]
login_keypad["login keypad:\nKey 0: [36 28 38 48 49 32 51 34 17]
Key 1: [ 9 19 2 3 4 41 33 52 8]
Key 2: [18 10 47 39 31 23 24 16 35]
Key 3: [27 46 29 21 22 14 6 43 26]
Key 4: [45 37 11 12 40 5 42 7 53]
Key 5: [ 0 1 20 30 13 50 15 25 44]
"]
space:4
selectkeys(("select keys"))
mask["enciphered mask:\n [ 3493 58469 55184 8226 64562 65478 39115 43240 43951 54660]"]
mask_key["mask key:\n[43734 31472 30293 34641 24055 5782 14606 48388 2666 19217]"]
space:2
xor1(("XOR"))
mask --> xor1
mask_key --> xor1
selected_keys --> selectkeys
login_keypad --> selectkeys
space:3
ordered_keys["ordered keys:\n[[45 37 11 12 40 5 42 7 53]
[36 28 38 48 49 32 51 34 17]
[45 37 11 12 40 5 42 7 53]
[18 10 47 39 31 23 24 16 35]]"]
user_position_key["user position key:\n[20407 42867 40597 20792 41413 36707 59728 31346 5612]"]
passcode_pos["ordered user passcode positions:\n[42867 40597 41413 42867 41413 59728 41413 5612 41413 40597]"]
selectkeys --> ordered_keys
xor1 --> passcode_pos
space:8
get_passcode_idxs(("recover passcode\nposition indices"))
user_position_key --> get_passcode_idxs
passcode_pos --> get_passcode_idxs
space:8
passcode_pos_idxs["padded passcode position indices:\n[1, 2, 4, 1, 4, 6, 4, 8, 4, 2]"]
get_passcode_idxs --> passcode_pos_idxs
space:3
get_presumed_idxs(("recover passcode\nproperty indices"))
ordered_keys --> get_presumed_idxs
passcode_pos_idxs --> get_presumed_idxs
space:5
passcode_prop_idxs["presumed passcode property indices:\n[37, 38, 40, 10]"]
prop["combined_property_key\n[30821 3466 44250 25125 12000 28631 18755 47674 39748 44826 63799 44556
56524 2214 32222 30993 35741 23971 31827 61015 47496 37765 56108 49196
13889 14121 13583 60138 19221 45386 21155 33931 1869 33046 24822 15526
35156 31004 63717 45289 11060 13028 13980 39298 64141 25653 12302 46090
40799 20649 24272 181 65477 17748]"]
cipheredhashed["hashed ciphered passcode:\n$2b$12$am68CvhXvNZFJE1qsmLSL.gC5I.cykt7LbisLcuUNkoFZ18vV1DPO"]
get_presumed_idxs --> passcode_prop_idxs
space:3
sel(("select\nproperties"))
passcode_prop_idxs --> sel
prop --> sel
space:5
passcode_prop["presumed passcode properties:\n[31004 63717 11060 63799]"]
sel --> passcode_prop
space:5
cipher(("encipher"))
passcode_prop --> cipher
space:5
cipheredpass["ciphered passcode:\n[ 5939 10436 52967 57187 48933 51588 25408 62022 36721 9334]"]
cipher --> cipheredpass
space:7
comp{"compare"}
cipheredpass --> comp
cipheredhashed --> comp
space:5
suc(("success"))
comp --"Equal"--> suc