hill(希尔)密码改进

希尔密码的最新更新修复了2阶矩阵求逆时的代数余子式错误。通过删除对应行列创建新矩阵并计算行列式值来正确求解。在计算矩阵值时,使用round()进行四舍五入处理。
摘要由CSDN通过智能技术生成

更新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 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值