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

3.0 KiB

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

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

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

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