matlab 模的平方,RSA模重复平方算法小示例
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模重复平方算法小示例相关推荐
- 模幂运算问题,使用朴素算法和重复-平方算法(快速幂+C#计算程序运行时间)
1.什么是模幂运算问题 给出a, k, mod 计算ak(%mod)a^k (\%mod)ak(%mod)的值 k是一个非常大的正整数(超过1e7) 附,一个可以提交的地方: leetcode 372 ...
- 信息安全数学基础——模重复平方计算法(两种方法实现C+JAVA)
你好,我是罡罡同学! 代码谱第一页忘掉心上人,最后一页...... 前言 正在学习信息安全数学基础这门课程. 编程实现模重复平方计算法. 先介绍一下模重复平方算法 一.模重复平方算法 图片来自大学MO ...
- 【密码学】C 语言实现 RSA 模幂运算
RSA模幂运算 1. 实验内容 按照平方乘算法和模重复平方法,分别计算am mod n 2. RSA介绍 RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi ...
- matlab2018中变压器模块,利用MATLAB中Sim+Power+Systems模库时变压器模型的参数计算及其仿真结果比较...
[实例简介] 变压器模型 matlab 仿真 参数计算 第21卷第1期向秋风,等:利用 MATLAB中 Sim Power System模库时变压器模型的参数计算及其仿真结果比较 17 其标幺值:R= ...
- 共模电感模型matlab,混成式共模电感的原理及功能讲解?
混成式共模电感的原理及功能讲解?岑科电感小编今天就给各位厂家们解开这个谜团! EMI抑制方案有许多组合,包括滤波器组合.变压器绕线安排,甚至PCB布局.本文提供一种结合共模电感与差模电感的磁混成,称之 ...
- 基于加取模和循环左移运算的扩散算法matlab
基于加取模和循环左移运算的扩散算法 实际上是对前面两种扩散算法的显著改良. LSB3表示取数据的最低三位,对于8b的灰度图像,每个像素都是8b的,所以LSB3得到的数据范围始终在0~7,是一个像素点数 ...
- KK模组、同步带模组和线性模组的区别在哪里?
KK模组作为一种轻便且实用的模组,自上市以来,一直受到众多厂家的青睐:目前,仍然还有很多人都不太了解KK模组.同步带模组与线性模组的区别在哪里? 首先我们要知道线性模组,也就是同步带模组和丝杆模组,跟 ...
- PMSM永磁同步电机滑模控制的直接转矩控制改进算法仿真模型,在传统算法上结合滑模控制算法加以改进
PMSM永磁同步电机滑模控制的直接转矩控制改进算法仿真模型,在传统算法上结合滑模控制算法加以改进,基于matlab/simulink搭建,以供参考学习 ID:8150678002556068阳光彩虹小 ...
- 电感计算软件_一文让你了解到共模电感和差模电感的差异
常见的接地符号有哪些? 五张图看懂EMI电磁干扰的传播过程 (点击上方红字,即可获取) 共模电感和差模电感 电源滤波器的设计通常可从共模和差模两方面来考虑.共模滤波器最重要的部分就是共模扼流圈,与差模 ...
- 模p加法和模p乘法学习
加密算法中常用到模p加法和模p乘法:下面来学习一下: 模p加法:(a + b) % p ,其结果是a+b算术和除以p的余数,也就是说,(a+b) = kp +r,则(a + b) % p = r. 模 ...
最新文章
- mysql中pi是什么意思,MySql delimiter的作用是什么
- Python文件的多种读写方式及游标
- 分配服务器证书在哪,手把手教你如何申请安装ssl服务器证书
- 聊聊同步、异步、阻塞与非阻塞
- python生成验证码_python之验证码生成(gvcode与captcha)
- ps3无线无法与服务器通信,psp上网出现无法与服务器通信(8001006F)
- Redis详解(六)------ RDB 持久化
- 读取Excel任务列表并显示在Outlook日历上
- Linux 多进程学习
- 风力发电机组的基本结构
- STM8L的LCD接口详解及驱动程序
- 无线安全-WiFi渗透流程
- 数据压缩实验 LZW编解码算法的实现与分析
- 【CCTC 2017】来自Mesosphere、美团点评、hyper.sh、凡泰极客、深圳睿云的容器与运维技术实战...
- QString自动补全
- FI---FI tables的结构和关系总览图
- 小程序配置服务器域名不生效问题
- pip install scrapy错误,安装C++14后成功
- 七牛利用JavaScript 上传图片到个人空间,并限制图片类型
- 关于服装穿搭 你知道这些吗?
热门文章
- Python视频制作 MoviePy框架视频处理模块
- java快捷复制_java - Eclipse复制/粘贴整行键盘快捷键
- 十本经典教材带你入门Python编程
- 京东联盟API接口-单页市场-提高商品转化率-京东高级API接口
- 分段函数的期望和方差_2014级《经济数学》课程教学大纲
- weka API,创建线性回归时出现缺少no.uib.cipr.matrix和org.netlib.blas的解决方案
- crmeb知识付费二开文档
- matlab 傅里叶变换 频谱图,傅里叶变换与信号频谱图.PDF
- Thinkphp微信幸运大转盘抽奖实例
- Java等额本息算法实现