Files
pynkode/docs/templates/encipher_decipher_nkode.template.md

128 lines
3.0 KiB
Markdown

# Encipher and Decipher nKode
### Customer Policy
- max nkode length: {{ max_nkode_len }}
- number of keys: {{ numb_of_keys }}
- properties per key: {{ props_per_key }}
- total number of properties: {{ numb_of_keys * props_per_key }}
### Customer Cipher
- property key: {{ customer_property_key }}
- position key: {{ customer_position_key }}
---
### User Cipher
- property key: {{ user_property_key }}
- passcode key: {{ pass_key }}
- combined position key: {{ combined_position_key }}
- mask key: {{ mask_key }}
#### Combined Postion Key
```mermaid
block-beta
columns 2
user_pos["user postion key:\n{{user_postion_key}}"]
customer_pos["customer postion key:\n{{customer_position_key}}"]
space:2
xor(("XOR")):2
user_pos --> xor
customer_pos --> xor
space:2
comb_pos["combined postion key\n{{combined_postion_key}}"]:2
xor --> comb_pos
```
### User Keypad
- keypad: {{ user_keypad}}
- user passcode indicies: {{ user_passcode_idxs}}
### nKode Cipher
#### Passcode Hash
```mermaid
block-beta
columns 2
cprop["customer_property_key\n{{customer_property_key}}"]
uprop["user_property_key\n{{user_property_key}}"]
space:2
xor1(("XOR")):2
cprop --> xor1
uprop --> xor1
space:2
prop["combined_properity_key\n{{combined_property_key}}"]
xor1 --> prop
pass["user_passcode_indicies\n{{user_passcode_idxs}}"]
space:2
sel(("select\nproperites")):2
pass --> sel
prop --> sel
space:2
passcode["passcode vals:\n{{passcode_vals}}"]:2
sel --> passcode
space:2
pad["zero pad to\nmax nkode length: {{max_nkode_len}}"]:2
passcode -->pad
space:2
paddedpasscode["padded passcode:\n{{padded_passcode}}"]
pad --> paddedpasscode
passkey["passcode key:\n{{pass_key}}"]
space:2
xor2(("XOR")):2
passkey --> xor2
paddedpasscode --> xor2
space:2
cipheredpass["ciphered passcode:\n{{ciphered_passcode}}"]:2
xor2 --> cipheredpass
space:2
hash(("hash")):2
cipheredpass --> hash
space:2
cipheredhashed["hashed ciphered passcode:\n{{code}}"]:2
hash --> cipheredhashed
```
#### Mask Encipher
```mermaid
block-beta
columns 3
passcode_idx["passcode indicies:\n{{user_passcode_idxs}}"]
comb_pos["combined position key"]
cust_pos["customer position key"]
space:3
pad1(("Pad with\nrandom indices"))
space:1
xor1(("XOR"))
comb_pos --> xor1
cust_pos --> xor1
passcode_idx --> pad1
space:3
padded_passcode_idx["padded passcode indices:\n{{pad_user_passcode_idxs}}"]
pad1 --> padded_passcode_idx
space:5
propidx(["Get Postion Idx:\nmap each to\nelement mod props_per_key"])
padded_passcode_idx --> propidx
space:5
posidx["Passcode Position Indices:\n{{passcode_pos_idx}}"]
propidx --> posidx
space:1
user_pos["user position key"]
xor1 --> user_pos
space:4
sel(("select\npositions"))
user_pos --> sel
posidx --> sel
space:5
passcode_pos["passcode positions:\n{{ordered_user_position_key}}"]
sel --> passcode_pos
mask_key["mask key\n{{mask_key}}"]
space:4
xor2(("XOR"))
mask_key --> xor2
passcode_pos --> xor2
space:5
mask["enciphered mask:\n {{mask}}"]
xor2 --> mask
```