更新hill密码
上一次的hill密码只能使用三阶密钥矩阵,后面发现了2阶矩阵求逆矩阵不正确,原因在于求代数余子式时出了错,这里更新一下代码
import numpy as np
# 输入矩阵并判断是否存在逆矩阵
def inputMatrix():
while True:
# 输入一行、作为行列式的阶数和行列式的第一行
rank = list(input("").split())
matrix = [[0] * len(rank) for i in range(len(rank))]
matrix[0] = rank
# 输入行列式剩余数据
for i in range(1, len(matrix)):
matrix[i] = list(input("").split())
# 判断每一行输入是否合法
if len(matrix[i]) != len(matrix):
print("输入有误,重新输入。")
continue
# 转换字符型为整型
for i in range(len(matrix)):
matrix[i] = list(map(lambda x: int(x), matrix[i]))
# 判断是否存在逆矩阵
if not judgeInverse(matrix):
print("矩阵不存在逆矩阵,重新输入。")
continue
return matrix
def gcd(a,b): # 最大公约数
while b>0:
rem=a%b
a=b
b=rem
return a
# 判断是否存在逆元
def judgeInverse(matrix):
det