@@ -149,19 +149,18 @@ def check_determinant(self) -> None:
149149 w.r.t 36. Try another key.
150150 """
151151 det_value = np .linalg .det (self .encrypt_key )
152- # Only round if necessary
153- det = int (det_value ) if det_value .is_integer () else int (round (det_value ))
154-
155- if det < 0 :
156- det = det % len (self .key_string )
157-
158- req_l = len (self .key_string )
159- if greatest_common_divisor (det , req_l ) != 1 :
160- msg = (
161- f"determinant modular { req_l } of encryption key({ det } ) is not co prime "
162- f"w.r.t { req_l } .\n Try another key."
163- )
164- raise ValueError (msg )
152+ det = int (round (det_value ))
153+
154+ if det < 0 :
155+ det = det % len (self .key_string )
156+
157+ req_l = len (self .key_string )
158+ if greatest_common_divisor (det , req_l ) != 1 :
159+ msg = (
160+ f"determinant modular { req_l } of encryption key({ det } ) is not co prime "
161+ f"w.r.t { req_l } .\n Try another key."
162+ )
163+ raise ValueError (msg )
165164
166165 def process_text (self , text : str ) -> str :
167166 """
@@ -276,24 +275,25 @@ def make_decrypt_key(self) -> np.ndarray:
276275 w.r.t 36. Try another key.
277276 """
278277 det_value = np .linalg .det (self .encrypt_key )
279- # Only round if necessary
280- det = int (det_value ) if det_value .is_integer () else int (round (det_value ))
281-
282- if det < 0 :
283- det = det % len (self .key_string )
284-
285- det_inv : int | None = None
286- for i in range (len (self .key_string )):
287- if (det * i ) % len (self .key_string ) == 1 :
288- det_inv = i
289- break
290-
291- if det_inv is None :
292- raise ValueError ("Modular inverse does not exist for decryption key" )
293-
294- det_float = np .linalg .det (self .encrypt_key )
295- inv_key = det_inv * det_float * np .linalg .inv (self .encrypt_key )
296- return self .to_int (self .modulus (inv_key ))
278+ # 直接取整并转换为整数
279+ det = int (round (det_value ))
280+
281+ if det < 0 :
282+ det = det % len (self .key_string )
283+
284+ det_inv : int | None = None
285+ for i in range (len (self .key_string )):
286+ if (det * i ) % len (self .key_string ) == 1 :
287+ det_inv = i
288+ break
289+
290+ if det_inv is None :
291+ raise ValueError ("Modular inverse does not exist for decryption key" )
292+
293+ det_float = np .linalg .det (self .encrypt_key )
294+ inv_key = det_inv * det_float * np .linalg .inv (self .encrypt_key )
295+ return self .to_int (self .modulus (inv_key ))
296+
297297
298298 def decrypt (self , text : str ) -> str :
299299 """
0 commit comments