RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
RSA的算法涉及三个参数,n、e1、e2。
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n及e1),(n及e2)就是密钥对。
RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n;
e1和e2可以互换使用,即:
A=B^e2 mod n;B=A^e1 mod n;
下面是加密函数:
encrypt.h
私钥生成部分:
PR_produce.h
主函数部分:
RSA1.0.cpp
注:RSA算法主要解决的就是在模幂运算中的算法,要保证计算不会溢出就不能用普通的先幂后模的加密解密方法,那样的话遇到大点的字母必将溢出。
分享到:
相关推荐
RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示
RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。...
RSA实现算法报告关于RSA算法的实现代码
RSA算法工具RSA算法工具RSA算法工具RSA算法工具 RSA算法工具
VC++实现RSA算法
RSA算法演示.rar
RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开...
RSA算法的纯Python实现,压缩包内共4个文件,分别是 1、大整数的运算库(当然不是算加减乘除的,这个python本身就有)。这个库是计算乘模运算,幂模运算(蒙哥马利算法),最大公约数算法及扩展最大公约数算法(扩展...
MFC界面 相当于一个用RSA算法实现的加密小软件
读硬盘序列号和加密RSA算法.rar 读硬盘序列号和加密RSA算法.rar
包涵三个RSA算法,c++是实现,数字签名的合集,三个独自的程序,可以独自编译运行,VC6.0下编译 包涵三个RSA算法,c++是实现,数字签名的合集,三个独自的程序,可以独自编译运行,VC6.0下编译
RSA算法加解密 详细介绍RSA算法的思想 附代码 很详细 绝对非常有用!!
目前的公开密钥算法大部分基于大整数分解、有限域上的离散对数问题和椭圆曲线上的离散对数问题,这些数学难题的构建大部分都需要生成一种超大的素数,尤其在经典的 RSA算法中,生成的素数的质量对系统的安全性有很大...
rsa算法
密码学中的RSA 算法的java代码实现,其中有模的重复平方计算法和中国剩余定理
RSA算法中模数和运算效率之间一直存在矛盾,目前一些认证机构已采用模数为 2048 bit 的 RSA 签名方法,这必然会影响签名效率。中国剩余定理对于提高RSA算法的模幂乘运算效率有显著作用,被广泛地应用在加速私钥解密...
易语言RSA算法演示源码,RSA算法演示
RSA算法C++实现 RSA算法C++实现
1.RSA算法的编程 2.编程改进原RSA算法,在运算速率上优化RSA算法(最好有前后两个程序速率的对比) 3.简单应用优化后的RSA算法(简单对一个文件加密)
delphi RSA算法示例以及源码,已经修改为XE系列可用代码,支持中文,可以直接拿来用,用来进行加密和解密