mysql 判断质数_公钥密码之RSA密码算法大素数判定:Miller-Rabin判定法!

本文介绍了RSA密码算法中大素数的判定方法——Miller-Rabin算法。内容包括算法原理、代码实现及在信息安全中的应用,帮助理解公钥密码体系中的素数测试。
摘要由CSDN通过智能技术生成

公钥密码之RSA密码算法大素数判定:Miller-Rabin判定法!

先存档再说,以后实验报告还得打印上交。

Miller-Rabin大素数判定对于学算法的人来讲不是什么难事,主要了解其原理。

先来灌输一下费马小定理:若p为素数,a是正整数且gcd(a,p)=1,则a^(p-1)%p=1。信息安全上俗称同余。本人时常将费马小定理与欧拉定理搞混淆,不过真的很类似。这里既是利用费马小定理来判定素数的。

当然了,费马小定理对于已知素数肯定是适用的,但不免存在一些伪素数也符合这个性质,所以我们需要随机数结合费马小定理来判断。Miller-Rabin算法的基本思想就是这些。

呈上代码:

#include

using namespace std;

const int N=20;

bool fast_pow(int a,int b)

{

int ans=1,tmp=b-1;

while(tmp)

{

if(tmp&1) ans=ans*a%b;

a=a*a%b;

tmp>>=1;

}

return ans==1;

}

bool miller_Rabin_check(int n)

{

for(int i=1;i

{

int x=rand()%n;

if(__gcd(x,n)==1)

{

if(!fast_pow(x,n))

return false;

}

}

return true;

}

int main()

{

int n;

while(~scanf("%d",&n))

{

if(n>1&&miller_Rabin_check(n)) puts("check successful!!");

else puts("check failure!!");

}

return 0;

}

公钥密码之RSA密码算法扩展欧几里德求逆元!!

扩展欧几里得求逆元 实话说这个算法如果手推的话问题不大,无非就是辗转相除法的逆过程,还有一种就是利用扩展欧几里德算法,学信安数学基础的时候问题不大,但现在几乎都忘了,刷题的时候也是用kuangbin博 ...

关于素数:求不超过n的素数,素数的判定(Miller Rabin 测试)

关于素数的基本介绍请参考百度百科here和维基百科here的介绍 首先介绍几条关于素数的基本定理: 定理1:如果n不是素数,则n至少有一个( 1, sqrt(n) ]范围内的的因子 定理2:如果n不是 ...

Pycrypto与RSA密码技术笔记

密码与通信 密码技术是一门历史悠久的技术.信息传播离不开加密与解密.密码技术的用途主要源于两个方面,加密/解密和签名/验签 在信息传播中,通常有发送者,接受者和窃听者三个角色.假设发送者Master想 ...

Pycrypto与RSA密码技术

密码与通信      密码技术是一门历史悠久的技术.信息传播离不开加密与解密.密码技术的用途主要源于两个方面,加密/解密和签名/验签.   pip install pycrypto RSA 密码算法与 ...

Miller Rabin算法详解

何为Miller Rabin算法 首先看一下度娘的解释(如果你懒得读直接跳过就可以反正也没啥乱用:joy:) Miller-Rabin算法是目前主流的基于概率的素数测试算法,在构建密码安全体系中占有重 ...

重复造轮子之RSA算法(一) 大素数生成

出于无聊, 打算从头实现一遍RSA算法 第一步, 大素数生成 Java的BigInteger里, 有个现成的方法 public static BigInteger probablePrime(int ...

记一次使用快速幂与Miller-Rabin的大素数生成算法

大家都知道RSA的加密的安全性就是能够找到一个合适的大素数,而现在判断大素数的办法有许多,比如Fermat素性测试或者Miller-Rabin素性测试,而这里我用了Miller-Rabin素性测试的算 ...

FZU 1649 Prime number or not米勒拉宾大素数判定方法。

C - Prime number or not Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & % ...

algorithm@ 大素数判定和大整数质因数分解

#include #include #include #include #in ...

随机推荐

truncate 、delete与drop区别

原博文地址:http://www.cnblogs.com/8765h/archive/2011/11/25/2374167.html 相同点: 1.truncate和不带where子句的delete. ...

NPOI Helper文档

public class ExcelHelper { /// /// NPOI Excel转DataTable /// /// &lt ...

odoo.cli.main()指的是哪里?OpenERP的第二根线头儿

接上回,odoo-bin中调用了odoo.cli.main(),去哪儿找? cli目录容易找 跟随__init__.py的脚步 import logging import sys import os ...

SQL优化之【类型转换】

DBA的日常工作中SQL优化占大半的时间,通常都是SQL语句性能问题或者schema设计有问题,最近遇到一个类型转换的问题,所以在这里分享一下,废话不多说了,直接建表进行测试. mysql), key ...

.Net操作注册表--un

C#操作注册表 导入命名空间 Using MicroSoft.Win32;//64位系统装的64位版本

瞎折腾之 NHibernate ORM框架的接触(MVC + Repository源码)(一)

在这炮火连天.技术更新迅猛的年代,不接触了解.甚至会用2~3种框架都不好意思说自己有多少年工作经验.况且出去面试也会有点吹牛的底子嘛. 这次折腾了NHibernate.其实这些ORM框架封装好了都是给 ...

lightoj 1094 Farthest Nodes in a Tree 【树的直径 裸题】

1094 - Farthest Nodes in a Tree PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...

Spring知识点回顾(08)spring aware

Spring知识点回顾(08)spring aware BeanNameAware 获得容器中的bean名称 BeanFactoryAware 获得当前的bean factory Applicatio ...

urls 管理

问题阐述:如何管理多个app下的路由分发,使得管理更加清晰? 1. 在app下创建urls.py文件 from django.conf.urls import url from django.urls ...

[WPF 容易忽视的细节] —— x:Name与Name属性

一.前言 WPF使用XAML来对界面进行编写,界面与后台逻辑分离.我们也可以写Style.Trigger来实现一些界面效果, 这些都是通过Name来定位控件的,例如Setter.TargetName. ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值