栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

密码学实验

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

密码学实验

文章目录
  • 效果
  • 代码

效果

代码
import math

# k、q生成
def get_KQ(n: int)-> list:
    Q = int(n - 1)
    K = 0
    while(Q%2==0):
        K += 1
        Q = int(Q / 2)
    return K, Q

# 素数判断
def isPrime(n): 
    if n <= 1: 
        return False
    for i in range(2, int(math.sqrt(n)) + 1): 
        if n % i == 0: 
            return False 
    return True 

# a选择
def get_A(n: int, nums=1)-> list:
    A = []
    flag = 0
    for i in range(2,n):
        if(flag bool:
    if (a**q)%n==1:
        return True

    for i in range(k):
        if (a**((2**i)*q))%n==n-1:
            return True    
    return False

# Miller_Rabin_Test
def M_R_Test(n, nums):
    k, q = get_KQ(n)
    a = get_A(n, nums=nums)
    p = 1
    for i in a:
        if judge_(n, k, q, i)==True:
            p *= 0.25
        else:
            p = 1
            break
    return p

if __name__=='__main__':
    # 用于检验的素数数量
    nums = 10
    # 被检验数
    n = 49921
    # 检验结果
    print(f'nn为合数的概率为:{M_R_Test(n, nums)}')
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977245.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号