当前位置: 首页 > wzjs >正文

在小说网站做责编百度关键词搜索

在小说网站做责编,百度关键词搜索,设计企业品牌网站,泰州网站优化公司拉宾公钥密码算法实现 (一) 算法原理1.1 密钥生成1.2 加密步骤1.3 解密步骤 (二) 算法设计2.1 密钥生成的设计与实现2.2 加密的设计与实现2.3 解密的设计与实现 (三)测试3.1 完整源码3.2 运行结果 &#xf…

拉宾公钥密码算法实现

    • (一) 算法原理
      • 1.1 密钥生成
      • 1.2 加密步骤
      • 1.3 解密步骤
    • (二) 算法设计
      • 2.1 密钥生成的设计与实现
      • 2.2 加密的设计与实现
      • 2.3 解密的设计与实现
    • (三)测试
      • 3.1 完整源码
      • 3.2 运行结果


(一) 算法原理


1.1 密钥生成

在这里插入图片描述

1.2 加密步骤

在这里插入图片描述

1.3 解密步骤

在这里插入图片描述


(二) 算法设计


2.1 密钥生成的设计与实现

# 生成一个大素数p
def generate_p():while True:# 使得p也在150位,p = 2t + 1时p为强素数,即t=p/2-1t = sympy.randprime(10**149, 10**150 / 2 - 1)if sympy.isprime(t):p = 2 * t + 1if len(str(p)) == 150 and sympy.isprime(p) and (p % 4 == 3):breakreturn p

2.2 加密的设计与实现

# 快速幂模运算(大指数的模运算),计算a^e mod m
def fastExpMod(a, e, m):a = a % mres = 1while e != 0:# if e & 1的判断是一种位运算,用于检查整数e的最低位是否为1。在二进制表示中,如果一个整数的最低位(最右边的位)是1,那么这个数就是奇数;如果最低位是0,那么这个数就是偶数。因此,if e & 1的判断常用于检查e是否为奇数。如果e & 1的结果为1,那么e就是奇数;如果结果为0,那么e就是偶数# 如果e是奇数,a^e=a^(e-1)*a,a^(e-1)可通过循环进行平方计算,还差个a直接乘进resif e & 1:res = (res * a) % me >>= 1  # 右移一位,相当于将 e 除以 2# a, a^2, a^4, a^8, ... , a^(2^n)a = (a * a) % mreturn res# 加密
def encode(m, n):c = m**2 % nreturn c

2.3 解密的设计与实现

# 孙子定理
def theorem(b1, b2, p, q):M1 = qM2 = p# M1 mod p的逆M1_ = gmpy2.invert(M1, p)M2_ = gmpy2.invert(M2, q)# p mod q的逆x = (b1 * M1 * M1_ + b2 * M2 * M2_) % (p * q)return x# 求解二次同余式
def calc_b(p, a):k = (p + 1) // 4b = fastExpMod(a, k, p)return b# 解密,有4个解,其中1个解为真正的明文
def decrypt(p, q, a):b1 = calc_b(p, a)b2 = calc_b(q, a)x1 = theorem(b1, b2, p, q)x2 = theorem(b1, -b2, p, q)x3 = theorem(-b1, b2, p, q)x4 = theorem(-b1, -b2, p, q)return [x1, x2, x3, x4]

(三)测试


3.1 完整源码

import sympy
import gmpy2# 生成一个大素数p
def generate_p():while True:# 使得p也在150位,p = 2t + 1时p为强素数,即t=p/2-1t = sympy.randprime(10**149, 10**150 / 2 - 1)if sympy.isprime(t):p = 2 * t + 1if len(str(p)) == 150 and sympy.isprime(p) and (p % 4 == 3):breakreturn p# 快速幂模运算(大指数的模运算),计算a^e mod m
def fastExpMod(a, e, m):a = a % mres = 1while e != 0:# if e & 1的判断是一种位运算,用于检查整数e的最低位是否为1。在二进制表示中,如果一个整数的最低位(最右边的位)是1,那么这个数就是奇数;如果最低位是0,那么这个数就是偶数。因此,if e & 1的判断常用于检查e是否为奇数。如果e & 1的结果为1,那么e就是奇数;如果结果为0,那么e就是偶数# 如果e是奇数,a^e=a^(e-1)*a,a^(e-1)可通过循环进行平方计算,还差个a直接乘进resif e & 1:res = (res * a) % me >>= 1  # 右移一位,相当于将 e 除以 2# a, a^2, a^4, a^8, ... , a^(2^n)a = (a * a) % mreturn res# 加密
def encode(m, n):c = m**2 % nreturn c# 孙子定理
def theorem(b1, b2, p, q):M1 = qM2 = p# M1 mod p的逆M1_ = gmpy2.invert(M1, p)M2_ = gmpy2.invert(M2, q)# p mod q的逆x = (b1 * M1 * M1_ + b2 * M2 * M2_) % (p * q)return x# 求解二次同余式
def calc_b(p, a):k = (p + 1) // 4b = fastExpMod(a, k, p)return b# 解密,有4个解,其中1个解为真正的明文
def decrypt(p, q, a):b1 = calc_b(p, a)b2 = calc_b(q, a)x1 = theorem(b1, b2, p, q)x2 = theorem(b1, -b2, p, q)x3 = theorem(-b1, b2, p, q)x4 = theorem(-b1, -b2, p, q)return [x1, x2, x3, x4]def main():m = 42443p = generate_p()q = generate_p()n = p * qc = encode(m, n)m_c = decrypt(p, q, c)print("m = %s\n密文c = %s\n明文m = %s" % (m, c, m_c))returnif __name__ == "__main__":main()

3.2 运行结果

在这里插入图片描述

http://www.dtcms.com/wzjs/100842.html

相关文章:

  • 深圳知名网站建设平台整站优化关键词推广
  • 做钓鱼网站怎么赚钱企业网站设计方案
  • 网站开发任务书模板电脑培训中心
  • 郑州做网站熊掌号深圳白帽优化
  • 中山网站制作方案网站排名软件利搜
  • 直播推广渠道国外网站seo免费
  • 我要表白网app百度快速排名优化工具
  • dedecms 英文网站定制网站建设
  • wordpress 安装 godaddy在哪里 上传的根目录seo首页优化
  • 网站专题建设合同网站建设开发简介
  • 广西网站建设开发google网站登录入口
  • 网站可以用视频做背景吗什么叫网络市场营销
  • 论坛做视频网站郑州seo阿伟
  • 数据型网站建设自己怎么优化网站排名
  • 51做网站在线推广企业网站的方法
  • 网站建设服务协议书深圳英文网站推广
  • 网站的动效怎么做的免费网站电视剧全免费
  • 大亨网站开发企业邮箱哪个好
  • 广告创意设计公司网站seo哪家做的好
  • behance设计网站注册四种营销策略
  • 做网站时量宽度的尺子工具怎么被百度收录
  • 如何进行主题网站的资源建设晋城网站seo
  • 亚马逊品牌备案的网站怎么做武汉网络推广seo
  • 中标查询win10优化大师
  • 做网站维护需要懂什么获客渠道有哪些
  • FileZilla做网站郑州关键词网站优化排名
  • 网站备份还原百度热搜榜排名今日
  • 电商网站建设运营协议如何创建公司网站
  • 网站建设 司法公开的需要seo排名优化培训怎样
  • 建设银行贵阳银行下载官方网站做网络推广一般是什么专业