RSA模重复平方算法实现示例代码

模重复平方算法

编码实现的两种思路:

2.1.先算高位再算低位

2.2.先算低位再算高位

本文参照《算法导论》做了些许尝试,发现matlab和C++都发生了超限情况。后无意中发现Python能够很好的处理244位的大数数的乘法,于是使用Python实现模重复平方算法,并给出一个小的例子。

2.1. 先算高位

"""模重复平方计算方法:算高位 """

import time

#算法解决的是a=b^n mod(n)

#输入的三个参数

n=5611111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111;

m=777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777;

b=7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777;

len(str(n)) #244位的大整数

#小整数测试用例

# n =560

# m =561

# b =7

start_time = time.time();

n_2 = bin(n)

x=0

a=1

for i in range(2,len(n_2)):

x = 2*x

a = a*a%m

if float(n_2[i]) == 1:

x = x+1

a = a*b%m

end_time=time.time()

total_time=end_time-start_time

print('总时间为%.3f' %total_time)

print('最终结果为%d' %a)

总时间为0.003

最终结果为597827521175301244475889063191856870100052394123770191590098011180384570125304731583699751371102528978113393699464822577528851786374198270141726642146665802894688261814615330540304839361320974730299148780013422574662587164800349707056407379

2.2.先算低位

"""模重复平方计算方法:算低位 """

import time

#算法解决的是a=b^n mod(n)

#输入的三个参数

n=5611111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111;

m=777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777;

b=7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777;

#小整数测试

# n =560

# m =561

# b =7

start_time = time.time();

#将大素数转化为二进制

n_2 = bin(n)

x=1

y=0

a=1

#转化为二进制最高两位为0b

for i in range(len(n_2)-1,1,-1):

if float(n_2[i]) == 1:

y = y+x

a = a*b%m

b = b*b%m

x = 2*x

end_time=time.time()

total_time=end_time-start_time

print('总时间为%.3f' %total_time)

print('最终结果为%d' %a)

总时间为0.006

最终结果为597827521175301244475889063191856870100052394123770191590098011180384570125304731583699751371102528978113393699464822577528851786374198270141726642146665802894688261814615330540304839361320974730299148780013422574662587164800349707056407379

matlab 模的平方,RSA模重复平方算法小示例相关推荐

  1. 模幂运算问题,使用朴素算法和重复-平方算法(快速幂+C#计算程序运行时间)

    1.什么是模幂运算问题 给出a, k, mod 计算ak(%mod)a^k (\%mod)ak(%mod)的值 k是一个非常大的正整数(超过1e7) 附,一个可以提交的地方: leetcode 372 ...

  2. 信息安全数学基础——模重复平方计算法(两种方法实现C+JAVA)

    你好,我是罡罡同学! 代码谱第一页忘掉心上人,最后一页...... 前言 正在学习信息安全数学基础这门课程. 编程实现模重复平方计算法. 先介绍一下模重复平方算法 一.模重复平方算法 图片来自大学MO ...

  3. 【密码学】C 语言实现 RSA 模幂运算

    RSA模幂运算 1. 实验内容 按照平方乘算法和模重复平方法,分别计算am mod n 2. RSA介绍 RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi ...

  4. matlab2018中变压器模块,利用MATLAB中Sim+Power+Systems模库时变压器模型的参数计算及其仿真结果比较...

    [实例简介] 变压器模型 matlab 仿真 参数计算 第21卷第1期向秋风,等:利用 MATLAB中 Sim Power System模库时变压器模型的参数计算及其仿真结果比较 17 其标幺值:R= ...

  5. 共模电感模型matlab,混成式共模电感的原理及功能讲解?

    混成式共模电感的原理及功能讲解?岑科电感小编今天就给各位厂家们解开这个谜团! EMI抑制方案有许多组合,包括滤波器组合.变压器绕线安排,甚至PCB布局.本文提供一种结合共模电感与差模电感的磁混成,称之 ...

  6. 基于加取模和循环左移运算的扩散算法matlab

    基于加取模和循环左移运算的扩散算法 实际上是对前面两种扩散算法的显著改良. LSB3表示取数据的最低三位,对于8b的灰度图像,每个像素都是8b的,所以LSB3得到的数据范围始终在0~7,是一个像素点数 ...

  7. KK模组、同步带模组和线性模组的区别在哪里?

    KK模组作为一种轻便且实用的模组,自上市以来,一直受到众多厂家的青睐:目前,仍然还有很多人都不太了解KK模组.同步带模组与线性模组的区别在哪里? 首先我们要知道线性模组,也就是同步带模组和丝杆模组,跟 ...

  8. PMSM永磁同步电机滑模控制的直接转矩控制改进算法仿真模型,在传统算法上结合滑模控制算法加以改进

    PMSM永磁同步电机滑模控制的直接转矩控制改进算法仿真模型,在传统算法上结合滑模控制算法加以改进,基于matlab/simulink搭建,以供参考学习 ID:8150678002556068阳光彩虹小 ...

  9. 电感计算软件_一文让你了解到共模电感和差模电感的差异

    常见的接地符号有哪些? 五张图看懂EMI电磁干扰的传播过程 (点击上方红字,即可获取) 共模电感和差模电感 电源滤波器的设计通常可从共模和差模两方面来考虑.共模滤波器最重要的部分就是共模扼流圈,与差模 ...

  10. 模p加法和模p乘法学习

    加密算法中常用到模p加法和模p乘法:下面来学习一下: 模p加法:(a + b) % p ,其结果是a+b算术和除以p的余数,也就是说,(a+b) = kp +r,则(a + b) % p = r. 模 ...

最新文章

  1. mysql中pi是什么意思,MySql delimiter的作用是什么
  2. Python文件的多种读写方式及游标
  3. 分配服务器证书在哪,手把手教你如何申请安装ssl服务器证书
  4. 聊聊同步、异步、阻塞与非阻塞
  5. python生成验证码_python之验证码生成(gvcode与captcha)
  6. ps3无线无法与服务器通信,psp上网出现无法与服务器通信(8001006F)
  7. Redis详解(六)------ RDB 持久化
  8. 读取Excel任务列表并显示在Outlook日历上
  9. Linux 多进程学习
  10. 风力发电机组的基本结构
  11. STM8L的LCD接口详解及驱动程序
  12. 无线安全-WiFi渗透流程
  13. 数据压缩实验 LZW编解码算法的实现与分析
  14. 【CCTC 2017】来自Mesosphere、美团点评、hyper.sh、凡泰极客、深圳睿云的容器与运维技术实战...
  15. QString自动补全
  16. FI---FI tables的结构和关系总览图
  17. 小程序配置服务器域名不生效问题
  18. pip install scrapy错误,安装C++14后成功
  19. 七牛利用JavaScript 上传图片到个人空间,并限制图片类型
  20. 关于服装穿搭 你知道这些吗?

热门文章

  1. Python视频制作 MoviePy框架视频处理模块
  2. java快捷复制_java - Eclipse复制/粘贴整行键盘快捷键
  3. 十本经典教材带你入门Python编程
  4. 京东联盟API接口-单页市场-提高商品转化率-京东高级API接口
  5. 分段函数的期望和方差_2014级《经济数学》课程教学大纲
  6. weka API,创建线性回归时出现缺少no.uib.cipr.matrix和org.netlib.blas的解决方案
  7. crmeb知识付费二开文档
  8. matlab 傅里叶变换 频谱图,傅里叶变换与信号频谱图.PDF
  9. Thinkphp微信幸运大转盘抽奖实例
  10. Java等额本息算法实现