8.2 KiB
8.2 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: [29187 8204 6047 64047 53525 11867 18824 35538 45077 33932 37992 15962 59642 23909 18198 52159 28347 8078 22066 56398 46985 41696 7084 56103 1625 31453 7418 15303 35465 27310 46695 8365 45388 58929 11384 64368 30936 44282 62811 22160 20933 21499 61363 9180 47285 5021 18129 20570 42619 30657 56801 14839 11286 38709]
- position key: [57791 55443 47428 9481 40757 62312 55581 59207 31500]
User Cipher
- property key: [63039 13937 22392 22556 23851 13063 2277 14453 60483 59297 53238 50783 40759 12966 14543 64414 12752 61149 16294 38792 40555 32560 54274 26845 8408 516 5126 11787 51712 48283 7084 25997 13305 51796 59458 333 50546 46819 29676 41112 7589 39340 7270 40439 32 16909 4097 47405 901 23033 12446 65486 41796 14649]
- passcode key: [ 3917 18489 51928 19673 27451 11243 32524 43956 43333 45897]
- combined position key: [65378 4217 1730 61114 26857 28326 25595 30504 39366]
- mask key: [28481 57972 43388 58568 3652 19285 25255 14159 35285 18802]
Combined Postion Key
block-beta
columns 2
user_pos["user position key:\n[ 7901 51434 49030 52147 63452 40398 47846 36975 58058]"]
customer_pos["customer position key:\n[57791 55443 47428 9481 40757 62312 55581 59207 31500]"]
space:2
xor(("XOR")):2
user_pos --> xor
customer_pos --> xor
space:2
comb_pos["combined position key\n[65378 4217 1730 61114 26857 28326 25595 30504 39366]"]:2
xor --> comb_pos
User Keypad
- keypad:
- user passcode indices: [16, 34, 51, 12]
nKode Cipher
Passcode Hash
block-beta
columns 2
cprop["customer_property_key\n[29187 8204 6047 64047 53525 11867 18824 35538 45077 33932 37992 15962
59642 23909 18198 52159 28347 8078 22066 56398 46985 41696 7084 56103
1625 31453 7418 15303 35465 27310 46695 8365 45388 58929 11384 64368
30936 44282 62811 22160 20933 21499 61363 9180 47285 5021 18129 20570
42619 30657 56801 14839 11286 38709]"]
uprop["user_property_key\n[63039 13937 22392 22556 23851 13063 2277 14453 60483 59297 53238 50783
40759 12966 14543 64414 12752 61149 16294 38792 40555 32560 54274 26845
8408 516 5126 11787 51712 48283 7084 25997 13305 51796 59458 333
50546 46819 29676 41112 7589 39340 7270 40439 32 16909 4097 47405
901 23033 12446 65486 41796 14649]"]
space:2
xor1(("XOR")):2
cprop --> xor1
uprop --> xor1
space:2
prop["combined_property_key\n[33852 5757 16615 41523 35902 7516 16749 45735 23638 25389 23454 63493
30669 28611 32729 12321 24427 61779 27028 19398 10722 56784 53166 46074
9857 30937 2300 5580 16521 54837 44491 17696 33461 11365 50234 64061
48554 6681 34487 62984 19552 51799 62421 48683 47253 20880 22224 59767
42494 11832 60799 50745 36690 44556]"]
xor1 --> prop
pass["user_passcode_indices\n[16, 34, 51, 12]"]
space:2
sel(("select\nproperties")):2
pass --> sel
prop --> sel
space:2
passcode["user passcode properties:\n[24427 50234 50745 30669]"]:2
sel --> passcode
space:2
pad["zero pad to\nmax nkode length: 10"]:2
passcode -->pad
space:2
paddedpasscode["padded passcode:\n[24427 50234 50745 30669 0 0 0 0 0 0]"]
pad --> paddedpasscode
passkey["passcode key:\n[ 3917 18489 51928 19673 27451 11243 32524 43956 43333 45897]"]
space:2
xor2(("XOR")):2
passkey --> xor2
paddedpasscode --> xor2
space:2
cipheredpass["ciphered passcode:\n[20518 35843 3297 15124 27451 11243 32524 43956 43333 45897]"]:2
xor2 --> cipheredpass
space:2
hash(("hash")):2
cipheredpass --> hash
space:2
cipheredhashed["hashed ciphered passcode:\n$2b$12$wC7VFWUqOhklJsvhVukMWeGtlHhsuLL58TFxVqahBTvMuyBiLInXW"]:2
hash --> cipheredhashed
Mask Encipher
block-beta
columns 3
passcode_idx["passcode indices:\n[16, 34, 51, 12]"]
comb_pos["combined position key:\n[65378 4217 1730 61114 26857 28326 25595 30504 39366]"]
cust_pos["customer position key:\n[57791 55443 47428 9481 40757 62312 55581 59207 31500]"]
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[7, 7, 6, 3]"]
propidx --> passcode_position_idx
space:5
pad1(("Pad with\nrandom indices"))
passcode_position_idx --> pad1
space:5
posidx["Padded Passcode Position Indices:\n[7, 7, 6, 3, 2, 8, 6, 1, 1, 4]"]
pad1 --> posidx
space:1
user_pos["user position key:\n[ 7901 51434 49030 52147 63452 40398 47846 36975 58058]"]
xor1 --> user_pos
space:4
sel(("select positions"))
user_pos --> sel
posidx --> sel
space:5
passcode_pos["ordered user passcode positions:\n[36975 36975 47846 52147 49030 58058 47846 51434 51434 63452]"]
sel --> passcode_pos
mask_key["mask key\n[28481 57972 43388 58568 3652 19285 25255 14159 35285 18802]"]
space:4
xor2(("XOR"))
mask_key --> xor2
passcode_pos --> xor2
space:5
mask["enciphered mask:\n [65326 29211 5018 12155 45506 43423 55361 65445 16703 48814]"]
xor2 --> mask
Validate nKode
block-beta
columns 3
selected_keys["selected keys:\n[3, 0, 1, 1]"]
login_keypad["login keypad:\nKey 0: [27 19 20 48 40 32 6 34 35]
Key 1: [ 9 37 29 12 13 23 51 7 17]
Key 2: [18 46 2 21 31 41 42 43 26]
Key 3: [36 28 38 39 22 50 33 16 44]
Key 4: [ 0 10 11 3 49 14 24 25 8]
Key 5: [45 1 47 30 4 5 15 52 53]
"]
space:4
selectkeys(("select keys"))
mask["enciphered mask:\n [65326 29211 5018 12155 45506 43423 55361 65445 16703 48814]"]
mask_key["mask key:\n[28481 57972 43388 58568 3652 19285 25255 14159 35285 18802]"]
space:2
xor1(("XOR"))
mask --> xor1
mask_key --> xor1
selected_keys --> selectkeys
login_keypad --> selectkeys
space:3
ordered_keys["ordered keys:\n[[36 28 38 39 22 50 33 16 44]
[27 19 20 48 40 32 6 34 35]
[ 9 37 29 12 13 23 51 7 17]
[ 9 37 29 12 13 23 51 7 17]]"]
user_position_key["user position key:\n[ 7901 51434 49030 52147 63452 40398 47846 36975 58058]"]
passcode_pos["ordered user passcode positions:\n[36975 36975 47846 52147 49030 58058 47846 51434 51434 63452]"]
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[7, 7, 6, 3, 2, 8, 6, 1, 1, 4]"]
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[16, 34, 51, 12]"]
prop["combined_property_key\n[33852 5757 16615 41523 35902 7516 16749 45735 23638 25389 23454 63493
30669 28611 32729 12321 24427 61779 27028 19398 10722 56784 53166 46074
9857 30937 2300 5580 16521 54837 44491 17696 33461 11365 50234 64061
48554 6681 34487 62984 19552 51799 62421 48683 47253 20880 22224 59767
42494 11832 60799 50745 36690 44556]"]
cipheredhashed["hashed ciphered passcode:\n$2b$12$wC7VFWUqOhklJsvhVukMWeGtlHhsuLL58TFxVqahBTvMuyBiLInXW"]
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[24427 50234 50745 30669]"]
sel --> passcode_prop
space:5
cipher(("encipher"))
passcode_prop --> cipher
space:5
cipheredpass["ciphered passcode:\n[20518 35843 3297 15124 27451 11243 32524 43956 43333 45897]"]
cipher --> cipheredpass
space:7
comp{"compare"}
cipheredpass --> comp
cipheredhashed --> comp
space:7
suc(("success"))
fail(("fail"))
comp --"Equal"--> suc
comp --"Not Equal"--> fail