@@ -149,19 +149,18 @@ def check_determinant(self) -> None:
149
149
w.r.t 36. Try another key.
150
150
"""
151
151
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 )
165
164
166
165
def process_text (self , text : str ) -> str :
167
166
"""
@@ -276,24 +275,25 @@ def make_decrypt_key(self) -> np.ndarray:
276
275
w.r.t 36. Try another key.
277
276
"""
278
277
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
+
297
297
298
298
def decrypt (self , text : str ) -> str :
299
299
"""
0 commit comments