numpy refactor
This commit is contained in:
@@ -18,7 +18,7 @@ class UserCipher:
|
||||
max_nkode_len: int
|
||||
|
||||
@classmethod
|
||||
def create(cls, keypad_size: KeypadSize, set_values: list[int], max_nkode_len: int) -> 'UserCipher':
|
||||
def create(cls, keypad_size: KeypadSize, set_values: np.ndarray, max_nkode_len: int) -> 'UserCipher':
|
||||
if len(set_values) != keypad_size.props_per_key:
|
||||
raise ValueError("Invalid set values")
|
||||
|
||||
@@ -35,18 +35,15 @@ class UserCipher:
|
||||
max_nkode_len=max_nkode_len
|
||||
)
|
||||
|
||||
def pad_user_mask(self, user_mask: list[int], set_vals: list[int]) -> np.ndarray:
|
||||
def pad_user_mask(self, user_mask: np.ndarray, set_vals: np.ndarray) -> np.ndarray:
|
||||
if len(user_mask) >= self.max_nkode_len:
|
||||
raise ValueError("User mask is too long")
|
||||
|
||||
user_mask_array = np.array(user_mask, dtype=np.uint16)
|
||||
set_vals_array = np.array(set_vals, dtype=np.uint16)
|
||||
|
||||
# Create padding of random choices from set_vals
|
||||
padding_size = self.max_nkode_len - len(user_mask)
|
||||
padding_indices = np.random.choice(len(set_vals), padding_size)
|
||||
padding = np.array([set_vals[i] for i in padding_indices], dtype=np.uint16)
|
||||
|
||||
# Concatenate original mask with padding
|
||||
padded_user_mask = np.concatenate([user_mask_array, padding])
|
||||
return padded_user_mask
|
||||
@@ -121,7 +118,7 @@ class UserCipher:
|
||||
mask = self.encode_base64_str(ciphered_mask)
|
||||
return mask
|
||||
|
||||
def decipher_mask(self, mask: str, set_vals: list, passcode_len: int) -> list[int]:
|
||||
def decipher_mask(self, mask: str, set_vals: np.ndarray, passcode_len: int) -> np.ndarray:
|
||||
set_vals_array = np.array(set_vals, dtype=np.uint16)
|
||||
decoded_mask = self.decode_base64_str(mask)
|
||||
deciphered_mask = np.bitwise_xor(decoded_mask, self.mask_key)
|
||||
|
||||
Reference in New Issue
Block a user