快速素数算法之RSA及在税收征管系统中的应用
公钥密码体制及典型算法-RSA
对称密码体制的缺陷
密钥分配问题 通信双方要进行加密通信,需要通过秘密的安全信道 协商加密密钥,而这种安全信道可能很难实现; 密钥管理困难问题 在有多个用户的网络中,任何两个用户之间都需 要有共享的秘密钥,当网络中的用户n很大时,需要管理的密钥数目 是非常大 。
n用户保密通信网,用户彼此间进行保密通信需要 2 Cn n(n 1) / 2 个密钥。 n=1000:499500个密钥 n=5000:12497500个密PKB求秘密钥SKB在计算 上是不可行的。 ⑤ 敌手由密文c和B的公开钥PKB恢复明文m 在计算上是不可行的。 ⑥ 加、解密次序可换,即 EPKB[DSKB(m)]=DSKB[EPKB(m)] 其中最后一条虽然非常有用,但不是对 所有的算法都作要求。
26
公钥密码算法应满足的要求
以上要求的本质之处在于要求一个陷门单向 函数。 单向函数是两个集合X、Y之间的一个映射, 使得Y中每一元素y都有惟一的一个原像x∈X,且 由x易于计算它的像y,由y计算它的原像x是不可 行的。这里所说的易于计算是指函数值能在其输入 长度的多项式时间内求出,即如果输入长n比特, 则求函数值的计算时间是na的某个倍数,其中a是 一固定的常数。这时称求函数值的算法属于多项式 类P,否则就是不可行的。例如,函数的输入是n 比特,如果求函数值所用的时间是2n的某个倍数, 则认为求函数值是不可行的。
5
公钥密码体制的基本概念
由私钥及其他密码信息容易计算出公开密钥 (a polynomial time (P-time) problem) 由公钥及算法描述,计算私钥是难的 (an NPtime problem) 因此,公钥可以发布给其他人(wishing to communicate securely with its owner ) 密钥分配问题不是一个容易的问题(the key distribution problem )
RSA非对称加密算法实验报告
2009年9月
第一部分
信息加密技术实验
第一部分 信息加密技术实验
一、实验目的:
在数据加密、解密的算法中,DES算法是典型的单密钥体制,RSA是典型的双密 钥体制, 目前均在大量使用。 通过实验, 让学生充分理解和掌握DES和RSA算法,PGP 加密工具的使用。以及通过网络进行数据加密传输的概念。
RSA实验: 运行《RSATool》演示软件: 产生公钥和私钥
第二项任务 DES加密解密工具2.1及其代码——支持字符串及文件加密,支持3重DES
1.DES 2.1 说明
先看看DES 2.1 的截图:
的简介: 2. DES 2.1 2.1的简介:
1.支持任意长度字符串加密解密 2.明文、密钥可以不足8字节 3.支持回车换行,Tab 等特殊字符 4.密文可以选择三种方式显示 5.支持3重DES 6.支持文件加密、解密 7.加密时显示进度
3.DES 算法介绍
关于DES算法的介绍大家可以看我博客里的另一篇文章,[原创]DES算法的介绍以及实
现(含上次DES程序1.0的 源 码 ) ,所以在此不在重述。
提供的 Public 函数 4. yxyDES2 Class Class提供的 提供的Public Public函数
下面我们来看看yxyDES2 类(Class)里public函数和它们的用法: //功能:产生16个28位的key //参数:源8位的字符串(key),存放key的序号0-1 //结果:函数将调用private CreateSubKey将结果存于char SubKeys[keyN][16][48] void InitializeKey(char* srcBytes,unsigned int keyN); //功能:加密8位字符串 //参数:8位字符串,使用Key的序号0-1 //结果:函数将加密后结果存放于private szCiphertext[16] // 用户通过属性Ciphertext得到 void EncryptData(char* _srcBytes,unsigned int keyN); //功能:解密16位十六进制字符串 //参数:16位十六进制字符串,使用Key的序号0-1 //结果:函数将解密候结果存放于private szPlaintext[8] // 用户通过属性Plaintext得到 void DecryptData(char* _srcBytes,unsigned int keyN); //功能:加密任意长度字符串 //参数:任意长度字符串,长度,使用Key的序号0-1 //结果:函数将加密后结果存放于private szFCiphertextAnyLength[8192] // 用户通过属性CiphertextAnyLength 得到 void EncryptAnyLength(char* _srcBytes,unsigned int _bytesLength,unsigned int keyN); //功能:解密任意长度十六进制字符串 //参数:任意长度字符串,长度,使用Key的序号0-1 //结果:函数将加密后结果存放于private szFPlaintextAnyLength[8192] // 用户通过属性PlaintextAnyLength 得到 void DecryptAnyLength(char* _srcBytes,unsigned int _bytesLength, unsigned int keyN); //功能:Bytes到Bits的转换, //参数:待变换字符串,处理后结果存放缓冲区指针,Bits缓冲区大小 void Bytes2Bits(char *srcBytes, char* dstBits, unsigned int sizeBits); //功能:Bits到Bytes的转换, //参数:待变换字符串,处理后结果存放缓冲区指针,Bits缓冲区大小 void Bits2Bytes(char *dstBytes, char* srcBits, unsigned int sizeBits);
素数的算法原理和应用
素数的算法原理和应用概述素数是指只能被1和自身整除的正整数。
素数在密码学、计算机科学和数学研究等领域具有重要的应用。
本文将介绍素数的算法原理以及在实际应用中的一些常见场景。
素数的判断算法判断一个数是否为素数是素数算法的基础。
常用的素数判定算法有两种:试除法和素数筛法。
试除法试除法是最简单直观的素数判定方法。
对于一个待判断的正整数n,只需从2开始遍历到sqrt(n)(即n的平方根)的整数m,检查是否有任何m能整除n。
若能找到能整除n的m,则n不是素数;否则,n是素数。
试除法的时间复杂度为O(sqrt(n)),适用于判断大部分整数是否是素数。
然而,对于非常大的数,这种方法的效率较低。
素数筛法素数筛法通过筛选法来判断素数。
其中最常用的是埃拉托斯特尼筛法。
首先,生成一个长度为n+1的布尔类型数组,将其初始值都设为true。
然后从2开始遍历到sqrt(n)的整数m,在数组中将2的倍数、3的倍数、4的倍数…全部标记为false。
最后,数组中值为true的索引对应的数就是素数。
素数筛法的时间复杂度为O(nloglogn),虽然比试除法高效,但由于需要生成一个长度为n+1的数组,对于非常庞大的数,也存在一定的限制。
素数的应用素数在密码学、计算机科学和数学研究等领域有广泛的应用。
以下是一些常见的素数应用场景。
密码学中的应用素数在密码学中起到至关重要的作用,特别是在公钥密码学中。
其中一个常见的应用是RSA加密算法。
在RSA算法中,首先需要生成两个大素数p和q,然后计算它们的乘积n=p*q。
n被用作加密和解密过程中的模数,而p和q用于生成公钥和私钥。
素数的随机性应用素数的随机分布属性使其成为生成随机数的重要组成部分。
例如,质数的随机分布性质被广泛应用在随机数生成算法中,确保生成的随机数能够满足安全性和随机性的要求。
整数因子分解素数在整数因子分解中也有重要应用。
由于素数只能被1和自身整除,因此在将一个大数分解成其因子时,可以使用素数的概念来加快计算过程。
rsa密码的原理与应用
RSA密码的原理与应用1. 简介RSA密码算法是一种非对称加密算法,由三位美国密码学家——Ron Rivest、Adi Shamir和Leonard Adleman共同开发而成,其优点是安全性高、加密解密速度快。
RSA算法广泛应用于数据传输、数字签名、身份认证等领域。
2. 原理RSA密码算法基于大数分解的难题,其核心原理包括如下几个步骤:2.1 密钥生成RSA算法使用一对密钥,包括公钥和私钥。
密钥生成的步骤如下:•随机选择两个大素数p和q,计算n=p*q作为RSA算法的模数。
•计算欧拉函数φ(n)=(p-1)*(q-1)。
•选择一个小于φ(n)的整数e,且e与φ(n)互质,作为公钥的指数。
•计算e关于φ(n)的模反元素d。
•公钥为(n,e),私钥为(n,d)。
2.2 加密与解密RSA算法通过公钥进行加密,私钥进行解密。
加密与解密的步骤如下:•加密:对于明文m,计算密文c = m^e mod n。
•解密:对于密文c,计算明文m = c^d mod n。
其中,^表示乘方运算,mod表示取模运算。
2.3 安全性分析RSA算法的安全性依赖于大数分解的困难性。
目前尚未找到一种有效的方法来快速分解一个大数,因此RSA算法被认为是安全的。
3. 应用RSA密码算法被广泛应用于以下几个方面:3.1 数据传输加密RSA算法可以用于保护数据的机密性。
发送方使用接收方的公钥对数据进行加密,只有接收方的私钥才能解密得到原始数据。
这样可以保证数据在传输过程中不会被窃取或篡改。
3.2 数字签名RSA算法可用于生成数字签名,用于验证数据的完整性和认证发送方的身份。
发送方使用自己的私钥对数据进行签名,接收方使用发送方的公钥验证签名的有效性。
3.3 身份认证RSA算法可以用于身份认证,例如在网络通信中,客户端可以使用服务器的公钥进行加密,以确保连接的安全性,并确保客户端与服务器之间的通信只能被服务器解密。
3.4 数字货币RSA算法在加密货币领域得到广泛应用。
RSA公钥密码体制简介
32
例:
计算: 152013(mod 2539) 13 23 1 22 0 2 1 1101 B
(e3 , e2 , e1, e0 ) (1,1,0,1)
152013 mod2539
(((1520e3 )2 1520e2 )2 1520e1 )2 1520e0 (mod 2539) ((15202 1520)2 15200 )2 1520 (mod 2539)
14
RSA算法论证
假设截获密文C,从中求出明文M。他知道 M≡Cd mod n ,
因为n是公开的,要从C中求出明文M,必须先求 出d,而d是保密的。但他知道,
ed≡1 mod φ(n), e是公开的,要从中求出d,必须先求出φ(n),而 φ(n)是保密的。但他又知道,
φ(n)=(p-1)(q-1),
9
RSA算法论证
于是,M tφ(n) =bq+1,其中b为某整数。 两边同乘M, M tφ(n)+1 =bqM+M 。 因为M=ap,故 M tφ(n)+1 =bqap+M =abn+M 。 取模n得, M φ(n)+1 =M mod n 。
10
RSA算法论证
第二种情况:M=0 当M=0时,直接验证,可知命题成立。
加密过程:c=me mod n 解密过程:m=cd mod n
3
2、工作原理
定义:任给一个正整数m,如果用m去除任意两个整 数a、b所得的余数相同,称a、b对模m同余。记 为: a bmodm,若余数不同,则a、b对模m不同余。 记为: a b modm。
定理: a bmodm ,当且仅当m|(a-b)。
RSA加解密算法C语言的实现
RSA加解密算法C语言的实现RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,常用于保护网络通信的安全性。
它的主要思想是通过生成一对公钥和私钥,使用公钥进行加密,使用私钥进行解密,从而保证安全性。
RSA算法的实现一般包括生成密钥对、加密和解密三个部分。
1.生成密钥对RSA算法的第一步是生成一对公钥和私钥。
生成密钥对的过程如下:1)选择两个较大的质数p和q;2)计算N=p*q,确定模数N;3)计算欧拉函数φ(N)=(p-1)*(q-1);4)选择一个整数e,满足1<e<φ(N)且e与φ(N)互质;5)计算e关于模φ(N)的乘法逆元d,满足d * e ≡ 1 (modφ(N))。
生成密钥对的代码实现如下:```c#include <stdio.h>typedef unsigned long long int ulli;ulli gcd(ulli a, ulli b)if (b == 0)return a;}return gcd(b, a % b);ulli inverse(ulli e, ulli phi)ulli d = 0;ulli x1 = 0, x2 = 1, y1 = 1, y2 = 0; ulli temp_phi = phi;while (e > 0)ulli quotient = phi / e;ulli remainder = phi - quotient * e; phi = e;e = remainder;ulli x = x2 - quotient * x1;ulli y = y2 - quotient * y1;x2=x1;x1=x;y2=y1;y1=y;}if (phi != 1)return -1; // 没有乘法逆元}if (y2 < 0)d = temp_phi + y2;} elsed=y2;}return d;int mainulli p, q, N, phi, e, d;printf("Enter two prime numbers: ");scanf("%llu %llu", &p, &q);N=p*q;phi = (p - 1) * (q - 1);printf("Enter a number e such that 1 < e < phi(N) and gcd(e, phi(N)) = 1: ");scanf("%llu", &e);d = inverse(e, phi);printf("Public Key (N, e) = (%llu, %llu)\n", N, e);printf("Private Key (N, d) = (%llu, %llu)\n", N, d);return 0;```2.加密RSA算法的第二步是使用公钥进行加密。
非对称密码系统ras的加密原理及其应用
非对称密码系统RSA的加密原理及其应用1. 引言在信息安全领域,密码学是一项重要的技术,用于保护数据的机密性和完整性。
非对称密码系统是密码学中的一种重要的加密算法,RSA算法是非对称密码系统中最常用的算法之一。
本文将介绍RSA算法的加密原理以及其在实际应用中的案例。
2. RSA算法的加密原理RSA算法是一种基于大数质因数分解难题的非对称密码算法。
其加密原理如下:1.选择两个大素数p和q,计算它们的乘积n,即n = p * q。
2.计算n的欧拉函数φ(n),即φ(n) = (p-1) * (q-1),φ(n)表示小于n且与n互质的正整数的个数。
3.选择一个整数e,满足1 < e < φ(n),且e与φ(n)互质。
4.计算e的模反元素d,满足d * e ≡ 1 (mod φ(n))。
5.公钥为(n, e),私钥为(n, d)。
RSA算法的加密和解密操作分别为:•加密:将明文M转化为整数m,使得0 ≤ m < n,然后计算密文C,C ≡ m^e (mod n)。
•解密:将密文C转化为整数c,然后计算明文M,M ≡ c^d (mod n)。
3. RSA算法的应用RSA算法广泛应用于信息安全领域,以下是几个典型的应用案例:3.1 加密通信RSA算法可以用于保护通信过程中的数据机密性。
通信双方可以使用对方的公钥进行加密,只有拥有对应私钥的一方才能解密得到明文。
这种方式可以有效防止第三方窃取通信内容。
3.2 数字签名RSA算法可以用于生成和验证数字签名,确保数据的完整性和真实性。
发送方使用私钥对数据进行签名,接收方使用对应公钥对签名进行验证。
通过公钥加密和私钥解密的方式,可以确保数字签名的唯一性,防止篡改和伪造。
3.3 身份认证RSA算法可以用于身份认证的加密协议。
通常情况下,服务提供方将其公钥存储在服务器上,用户使用该公钥对其身份认证信息进行加密,并发送给服务器。
服务器使用私钥解密得到用户的身份认证信息,若解密成功,则认证通过。
RSA加密解密算法
RSA加密解密算法RSA(Rivest–Shamir–Adleman)加密算法是一种非对称加密算法,也是目前最常用的公钥加密算法之一、它是由Ron Rivest、Adi Shamir 和Leonard Adleman于1977年共同开发的,取名来自他们三个人的姓氏的首字母。
RSA算法的安全性建立在两个大素数难因分解的理论上,即若一个非常大的整数,其因数分解为两个素数的乘积,那么要分解这个大整数就很困难。
该算法的基本原理是选取两个大素数p和q,并计算得到N=p*q,将N作为公钥的一部分。
公开N和一个加密指数e,而私钥则包含了p、q 和一个解密指数d。
加密时,消息经过加密指数e进行加密得到密文,解密时利用解密指数d对密文进行解密。
只有知道私钥的人才能解密得到原始消息。
具体的加密过程如下:1.选择两个不同的大素数p和q。
2.计算N=p*q。
3.计算φ(N)=(p-1)*(q-1),φ(N)即N的欧拉函数值。
4.选择一个与φ(N)互质的加密指数e,其中1<e<φ(N)。
5.计算解密指数d,使得(e*d)%φ(N)=16.公钥为(e,N),私钥为(d,N)。
7.将明文m转化为整数m,确保m小于N。
8.加密密文c=m^e%N。
9.解密明文m=c^d%N。
RSA算法的安全性取决于分解大整数的难度,目前没有快速的算法能够在合理的时间内分解大整数。
因此,只要选择足够大的素数p和q,RSA算法就足够安全。
RSA算法在实际应用中起到了重要的作用。
它广泛应用于数字签名、密钥交换、加密通信等领域。
它通过使用不同的指数对数据进行加密和解密,实现了安全的通信。
同时,RSA算法也具有可逆性,在现实世界中起到了非常重要的作用。
总结来说,RSA加密算法是一种非对称加密算法,它的安全性基于大整数的因数分解难度。
它广泛应用于各个领域,通过使用公钥和私钥对数据进行加密和解密,实现了安全的通信。
尽管它的运算速度较慢,但是在很多场景下,RSA算法仍然是最安全和最实用的加密算法之一。
rsa的原理
rsa的原理RSA加密算法原理及应用RSA加密算法是一种非对称加密算法,由三位数学家Rivest、Shamir和Adleman在1977年提出,是目前最广泛使用的公钥加密算法之一。
RSA算法的安全性基于大数分解的困难性,即对于一个非常大的合数,要将其分解成两个质数的乘积是非常困难的。
RSA算法的原理是基于数学中的欧拉定理和扩展欧几里得算法。
首先,选择两个大质数p和q,计算它们的乘积n=p*q,然后选择一个整数e,使得e与(p-1)*(q-1)互质。
接着,计算e关于(p-1)*(q-1)的模反元素d,即满足(e*d) mod (p-1)*(q-1)=1的整数d。
此时,公钥为(n,e),私钥为(n,d)。
加密时,将明文m转换为整数M,然后计算密文C=M^e mod n。
解密时,将密文C转换为整数C,然后计算明文m=C^d mod n。
由于只有知道私钥才能解密,因此RSA算法是一种非对称加密算法。
RSA算法的应用非常广泛,例如在电子商务、数字签名、SSL/TLS 协议等领域都有广泛的应用。
在电子商务中,RSA算法可以用于保护用户的隐私信息,例如信用卡号、密码等。
在数字签名中,RSA 算法可以用于验证数字签名的合法性,保证数字签名的真实性和完整性。
在SSL/TLS协议中,RSA算法可以用于保护网络通信的安全性,例如HTTPS协议中的SSL证书就是基于RSA算法实现的。
虽然RSA算法是一种非常安全的加密算法,但是它也存在一些缺点。
首先,RSA算法的加密和解密速度比较慢,因为它需要进行大数运算。
其次,RSA算法的安全性依赖于大数分解的困难性,如果有一种更快速的算法可以有效地分解大数,那么RSA算法的安全性就会受到威胁。
因此,为了保证RSA算法的安全性,需要选择足够大的质数p和q,以及足够长的密钥长度。
RSA算法是一种非常重要的加密算法,它在保护网络通信、保护用户隐私、验证数字签名等方面都有广泛的应用。
虽然RSA算法存在一些缺点,但是它仍然是目前最广泛使用的公钥加密算法之一。
RSA算法及实现介绍
四、加解密框架(伪代码):
• 加解密框架(伪代码): RSA_Code( M,e,n,Len,C_out ) {
M明文分组m1…mx; For I = 1 to x
C = m^e mod n --积模分解公式、Fame2 Next I }
RSA_Decode(C, dp, dq, p, q, u, Len, M_out) {
C密文分组c1…cx; For I =1 to x
m1 = C^dp mod p m2 = C^dq mod q h’ = (m1 – m2) mod p h = h’u mod p M = m2 + qh Next I }
• RSA算法主要用到的基本运算法则:
• Fame2寄存器简介 FM_STAT: 提示运行状态 FM_CMD: 控制运算模块的复位、运行等操作 FM_MODE:选择运算模式 FM_XPTR\YPTR\TOPP:参数寄存器 FM_UPTR \FM_UPTRT:实现需要的运算步骤 …等等
三、寻找大素数:p 、q
• 寻找到大素数p、q即可通过计算得到公钥 (e,n),及CRT私钥(p、q、dp、dq、u)
• 费马小定理: N为任意正整数,P为素数,且N不能被P整 除,则有:
拉宾米勒测试方法寻找素数P:
1.判断P是否为奇数,不是则判断失败。 2.选T个随机整数A,且0<A<P成立。进行费马
小定理测试,计算并判断A^(p-1) mod p结 果是否为1,不是则失败。 3.找到R、M,使p = 2^R * M +1成立。 4.如果A^M mod N = 1成立,则进行下一个A 元素的测试,否则将A^M乘方后作为底数S, 在计算S^M mod N = 1是否成立。若到 S = A^2^MR 时,仍有S^M mod N = 1不成立, 则P不是素数
RSA公钥加密算法的设计与实现本科毕业论文
RSA公钥加密算法的设计与实现本科毕业论⽂RSA公钥加密算法的设计与实现RSA公钥加密算法的设计与实现【论⽂摘要】RSA公钥加密算法是⽬前最有影响⼒的⾮对称加密算法,为ISO的推荐的加密标准。
⽽⾮对称加密因其安全性、开放性以及在数字签名技术中的重要性,在我们的⽣活中被使⽤得越加频繁。
RSA的安全性建⽴在⼤整数的分解困难上,其基本原理是初等数论中的欧拉定理。
在⼯业实现上,为了保证加密的安全性,通常要求密钥对⼤于1Kbits,然⽽计算机的整型变量为32bits,这构成⼀个⽭盾。
此外,RSA密钥的⽣成需要产⽣随机的⼤素数,这也是本⽂需要解决的问题。
【关键词】RSA;⾮对称加密;素数The d esign and implementation of RSA public keyencryption algorithm【ABSTRACT】RSA public key encryption algorithms are the most influential dissymmetrical encryption algorithms, the recommended encryption standard to ISO. And dissymmetrical encryption is used more and more frequently in our lives because of its security, openness and the importance in digital signature technology.RSA's security is built on the difficulties of big integer factorization, whose basic principle is the Euler's theorem in elementary number theory. In order to ensure the security of encryption, when it comes to industry, we often require the key pair is greater than 1Kbits. However, the integer class of computers occupies 32bits, which constitutes a contradiction. In addition, RSA's key-generation needs a random large prime number, which is also a problem to be solved.【Keywords】RSA; dissymmetrical encryption; prime number⽬录RSA公钥加密算法的设计与实现 ...................... II The design and implementation of RSA public key encryption algorithm .............................................. II ⽬录............................................... III ⼀.前⾔ (1)(⼀)引论 (1)(⼆)背景知识 (2)1. 密码技术的发展 (2)2. 密码学的主要任务 (4)3. 密码系统的安全性 (5)4. 对称与⾮对称密码的区别 (5)5. 公钥:RSA密码体制 (6)⼆、实验部分 (8)(⼀)实验⽬的 (8)(⼆)实验环境 (8)(三)实验步骤 (8)1. ⼤整数类 (8)2. 快速模幂运算 (9)3. 快速产⽣随机素数 (9)4. 扩展的欧⼏⾥德算法 (10)(四)代码设计 (11)1. ⼤整数类 (11)2. Rsa类 (14)3. 关键代码 (16)三、结果与讨论 (17)(⼀)程序展⽰ (17)1. 程序主界⾯ (17)2. RSA密钥产⽣ (18)3. 加密解密展⽰ (20)(⼆)RSA分析 (21)1. RSA的安全性 (21)2. RSA效率 (22)(三)⼩结 (24)注释 (25)参考⽂献 (26)致谢 (27)⼀.前⾔(⼀)引论从公元前5世纪,古希腊斯巴达⼈⽤⽊棍和带⼦进⾏换位密码,到现在的⽹上购物、⽹上银⾏,密码学在我们⽣活中占着越来越重要的地位。
身份证信息rsa加密算法以实现
摘要系统实现了对身份信息的加密、解密、签名认证以及公私密钥对产生器等相关功能,对身份信息的的加解密采用的是RSA加密算法,可直接呈现加密后的RSA结果,为了确保会话密钥的安全,也是通过使用非对称加密算法RSA算法为会话密钥加密.目录摘要 (I)绪论 (2)(一)课题来源 (2)(二)研究意义 (2)一、数据安全的研究方向 (2)(二)身份信息的加密、解密 (2)二身份信息加解密及验证系统方案及实现 (4)(一)文件的加密 (4)(二)文件的解密及传输验证的正确性 (4)(三)公私密钥对 (5)绪论(一)课题来源计算机技术的不断发展,Internet的普及,网络化的信息逐渐被人们所接受,传统的传递信息的方式法神关了巨大的变化,也逐渐改变了人们的生活。
目前互联网发展日益迅速,人们越来越多地使用互联网传递各种消息资料,而利用互联网进行文件的传输是人们进行信息交流的必要手段,然而文件在传输过程中容易受到截获、嗅探和篡改等攻击,也日益成为困扰人们使用互联网传递文件的阻碍。
同时信息的保密性也越来越受到威胁,如何提高身份信息的保密性及身份信息传输过程变得更安全可靠就是一个急需解决的问题,尤其是在政务系统的应用中,安全性则成为的重中之重的问题,安全问题的解决是良好办公系统环境的先决条件。
(二)研究意义通过国家计算机网络应急技术处理协调中心统计显示,我国政府网络被黑客入侵逐年递增,维护好电子政务系统的安全、办公过程中信息传递的安全,防止被一些怀有不良居心的人抄袭或破坏,因此就需要安全措施来保护相应的信息及数据不被窃取或篡改,而采取对数据直接解密的方式即方便又安全,是保护信息安全的有效手段。
本研究课题,完成相应的系统,用户间可进行安全的文件、图片的收发。
所有的交互身份信息都经过加密和签名处理,通过验证签名机制可验证是否被恶意篡改,传输者将明文进行加密后的密文进行存储和传输,授权的接收者用本系统进行解密恢复明文,而未经授权的截获者将无法对明文可见,从而保证了身份信息的安全性。
RSA算法的一种实现以及在CAS中的应用
即 e・ 三 1mo  ̄ p 1 d ( 一 )・(一 ) g1 ]
因此 e・ 一 ( 一 0・( 一 ) 1 p1 q 1 + 一 ( + 1 )
P + 一 P ‘ ・P三 P o ‘ o r d
() 2
( 3)
设 P 是 明 文 , 式 ( ) 得 : 三 1ro 从 1可 P d o
中 圈分 类 号 :T 3 9 2 P 0 . 文 献 标 识 码 :A
ABSTR ACT I de O s l e t e urt oblm at es a c ng n or r t o v he s c iy pr e ofd am s geex ha e,ba e hede c i i n oft at ematc p i i e s d on t s rpto hem h i rncpl
身份认 证 等许 多领域 。
条 件接 收 系统 C ( o dt n l cs y tm) AS C n io a AcesS se i
式 ( ) RS 算法 的理 论基 础 。 3为 A
设 C是密 文 , 密 时按 下式 求得 密文 C 加
C — P r od o () 4
维普资讯
RS 算 法 的 一 种 实 现 以及 在 CA A S中 的 应 用
文 章 编 号 :0 35 5 (0 7 0- 0 40 1 0—8 0 2 0 )80 2 —2
RS 算 法 的 一 种 实 现 以 及 在 C A AS中 的 应 用
A o to a i a i n O S r f Re lz to f RSA g ih nd is App i a i n Al or t m a t lc to t nd to lAc e s Sy t m O Co ii na c s s e
RSA大素数生成法
RSA算法中安全大素数的生成应用数学0801白钦予080705003第一部分.序RSA算法简介。
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;RSA算法密钥的生成是很麻烦的,原因就是生成大素数不是一个容易的事情,目前能预测保证2030年之前足够安全的RSA密钥长度是2048bit,所以能否快速生成大素数构造RSA的密钥是一个影响RSA实际使用的至关重要的因素。
下面文章便从数学以及计算科学的角度,提供一种生成大素数的方式。
第二部分.大素数生成法素数生成流程分为素数搜索、素数预筛选、素数测试三个阶段。
一.素数搜索。
首先,我们有两种方法可以选取。
常用的搜索方法有随机搜索法和随机递增搜索法两种。
它们分别是:随机搜索法:随机产生一个奇数p1进行素数测试,若是素数,则结束;否则,重新随机产生一个奇数P2进行素性测试,直至找到一个素数Pt 。
由于素数分布的不确定性,尤其是在于高达2000以上位数的等级上素数的分布更加无序,可见这种方法实践起来是很耗时的。
随机递增搜索法比起之前的方法要好一点:随机产生一个奇数,对以该数为起点的奇数依次进行测试,直至找到一个素数。
这种方法相对于随机搜索法,在速度上有一定的提高,但是并没有本质上的区别。
其实对于素数的生成,并不需要一定在一个算法中就要直接地生成一个素数,我们只需要生成一个接近于素数的数,比如非单位因子仅有很少的大奇数,或称其为伪素数,然后再对其进行素数检验就可以了。
【论文】Solovay-Strassen素数判定算法
1前言网络信息安全的研究主要有两个研究方向,一个是网络协议的分析,通过分析网络协议检测出网络协议中存在的漏洞,然后有效的修改这些网络协议,弥补这些漏洞。
另一个就是通过对信息进行加密,把需要通过网络传输的信息加密后再进行传输和把机密的信息加密后再进行存储。
近年来,随着计算机运算速度的不断提升利黑客攻击手段的不断改进,保密通信和信息安全越来越受到人们的重视,直接促进了密码学的发展和应用。
在现代密码系统中,大素数的判别和寻找对一些加密系统起着关键作用。
很多公钥密码算法都用到素数,特别是160位(二进制)以上的大素数。
熟知,RSA 的公共模数就是两个512(近年来又有了对1024,乃至2048)位以上的大素数的乘F上离散对数的公钥密码体制,其中素数p要求在512积;又如,基于有限域p位以上,且p-1有一个大素因子q(160比特以上);再如,基于椭圆曲线离散对数的公钥密码体制(ECC)中,一般要求基点的阶是一个160位以上的大整数,且是一个素数。
由此可见大数的素性判断的重要性。
但当前既没有一个有效的确定性素数检测算法,也没有一个高效确定性素数产生算法。
当前使用的高效的素数判定算法都是概率算法,速度虽快,但可能会错判误判,即把合数判定成素数,这将会严重影响系统的可靠性以及安全性。
而RSA 算法是目前最优秀的公钥解决方案之一, 其安全性建立在大整数分解为两个素数之积的困难性假设基础之上。
因此, RSA 算法的核心问题是要解决通过何种方式能快速的找到两个大的随机素数。
这样既有利于提高RSA 加密的安全性, 又有利于提高加密效率。
因此,开展在多项式时间内判断一个正整数是否是素数的确定性算法研究,以及快速素数产生算法的研究是非常必要和急需的,这对于促进公钥密码体制的应用以及增强保密通信的可靠性以及安全性都有重要意义。
2 算法概述素数就是一个除了1和它自身以外不能被其它数整除的数。
关于素数的一个基本问题是如何有效地确定一个数是否是一个素数,即素性测试问题。
RSA算法描述
2.RSA算法RSA算法需要以下相关的数学概念:素数:素数是一个比1大,其因子只有1和它本身,没有其它数可以整除它的数。
素数是无限的。
例如,2,3,5,7……等。
两个数互为素数:指的是它们除了1之外没有共同的因子。
也可以说这两个数的最大公因子是1。
例如,4和9,13和27等。
模运算:如A模N运算,它给出了A的余数,余数是从0到N-1的某个整数,这种运算称为模运算。
RSA加密算法的过程如下:(1)取两个随机大素数p和q(保密)(2)计算公开的模数r=pq(公开)(3)计算秘密的欧拉函数ϕ (r) =(p-1)(q-1)(保密),两个素数p和q不再需要,应该丢弃,不要让任何人知道。
(4)随机选取整数e,满足gcd(e, ϕ (r))=1(公开e,加密密钥)(5)计算d,满足de≡1(mod ϕ (r))(保密d,解密密钥,陷门信息)(6)将明文x(其值的范围在0到r-1之间)按模为r自乘e次幂以完成加密操作,从而产生密文y(其值也在0到r-1范围内)y=x e (mod r)(7)将密文y按模为r自乘d次幂,完成解密操作x=y d (mod r)下面用一个简单的例子来说明RSA公开密钥密码算法的工作原理。
取两个素数p=11,q=13,p和q的乘积为r=p×q=143,算出秘密的欧拉函数ϕ (r)=(p-1)×(q-1)=120,再选取一个与ϕ (r)=120互质的数,例如e=7,作为公开密钥,e的选择不要求是素数,但不同的e的抗攻击性能力不一样,为安全起见要求选择为素数。
对于这个e值,可以算出另一个值d=103,d是私有密钥,满足e×d=1 mod ϕ (r),其实7×103=721除以120确实余1。
欧几里德算法可以迅速地找出给定的两个整数a和b的最大公因数gcd(a,b),并可判断a与b是否互素,因此该算法可用来寻找解密密钥。
120=7×17+11=120-7×17 mod 120=120-7×(-120+17) mod 120==120+7×103 mod 120(n,e) 这组数公开,(n,d)这组数保密。
RSA 的大数运算
俺曾经查阅了网上找得到的各种用于实现RSA 的大数运算库,然而最终还是决定自己动手写一个。
因为凡是效率高速度快的代码(crypto++、miracl、freelip、rsaref等),要么使用的数据结构过于复杂,要么编码风格杂乱无章,俺的水平和耐心都实在是有限,以至于无法读懂这些东西。
而俺读得懂的一些代码,其实现方式却又过于幼稚,效率极低速度一塌糊涂。
俺觉得像俺这样的人不在少数,于是决心写一个清晰易懂,效率也过得去的东西奉献给大家。
这个函数库刚做好的时候,生成1024位的随机密钥耗时大约5 分钟,俺认为是可以接受的。
但后来找到一个叫tE! 的老外用miracl库写的RsaTools,发现其生成1024位的密钥耗时不超过三秒钟!于是俺针对俺的代码开始了艰苦的优化工作,希望能达到甚至超过这一水平?一周之后1024位密钥的平均生成时间已经降至5 秒左右,但是单单依靠优化代码来进一步提高速度也非常困难了。
于是俺开始借助金山词霸来查阅能够通过google找到的一切与RSA 算法相关的论文,但是网上关于RSA算法的论述绝大多数都是用于硬件实现的,将其算法流程用软件设计语言来实现极其繁琐?而且俺发现这样做下去俺只会离自己的初衷越来越远: 俺的代码将不再清晰易懂?所以俺一度准备放弃?准备放弃之后,心态平静了许多,再回头去看那些原来不太能够理解的RSA 算法原理,却发现其实也不是那么高深莫测,不急不躁地慢慢看,慢慢想,突然就一下子全明白了。
一番改进之后,现在这个版本的函数库同样具有非常简单而清晰的结构,速度也不算慢,生成1024位的密钥在俺PIII 900的笔记本上平均耗时不超过两秒。
程序使用C++ 编写,可在VC6.0 下直接编译通过,希望大家喜欢。
如果发现Bug 或者有好的修改建议,俺将非常感谢您能够给俺一个Mail。
最后,感谢看雪论坛,感谢雪兄多次热心相助,俺在此学到了很多知识,当然还要乘机拍拍马屁,感谢俺家甜甜的支持!afanty@ RSA 原理:选取两个不同的大素数p、q,并计算N=p*q选取小素数d,并计算e,使d*e % (p-1)(q-1)=1对于任意A<N:若B=A**d % N则A=B**e % N可见d、e形成了非对称秘钥关系,加密者用公钥d加密,解密者可用私钥e解密,第三者即使拦截了密文B、公钥d和N,在不知道p、q的前提下,无法推算出e,从而无法获得明文A。
快速指数算法
快速指数算法出问题了,程序好像错了,这两天考试,考完试改问题简介在RSA中,加、解密过程都是要求某个整数的整数次幂后再取模。
⼤多时候,这两个整数都会⽐较⼤,这时候直接按含义来进⾏计算时得到的中间结果会超出计算机所允许的整数取值范围(例如计算6677,这还是⽐较⼩的);另⼀⽅⾯,我们也要考虑计算的效率,如6677直接按照定义计算的话需要做76次乘法,开销是相当⼤的。
针对这两个问题,我们就需要有⼀个好的算法来⾼效且准确地计算⼤整数的幂运算。
初步思路针对第⼀个问题,即数值过⼤问题,可以考虑利⽤模运算的性质:(a∗b)(modn)=[(a(modn))∗(b(modn))](modn)就能有效减⼩中间值。
针对第⼆个问题,可以利⽤指数的性质,对每个部分的结果重复做平⽅运算,最低可以将运算次数减为log2n,如计算x16时,可以按照如下⽅式进⾏:x2,x4,x8,x16只需要计算4次,⽐按照定义计算减少了3/4。
快速指数算法快速指数算法整合了上⾯两种思想,算法描述如下:通常,在我们计算a m modn时,先将m表⽰为⼆进制形式b k,b k−1,...,b0,即m=∑b i=12i因此,a m=a∑b i=12i=∏b i=1a2ia m modn=[∏b i=1a2i]modn=∏b i=1[a2i modn]代码简略实现:d = 1for i in range(k+1):d = d*d%nif b[i] == '1':d = d*a%n突然想起来,今天林⽼师课上说我们讲义上错误真的很多,但我相信以你们的能⼒都能纠正过来,呜呜呜,我哭辣,⼀下午就记住这⼀句话Processing math: 100%。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
因此 , 改进中国税 收征管信息 系统 V . 2 0版 , 应用 ( P一1 ( ) q—1 ( 密 ) )保 ; R A公 钥 密码体 制 将 电子 网上 纳税 申报 进 行 数 字 S () 3 随机选 取 整数 e e 为公 钥 , 开 ) 且 满 (称 公 ,
签 名迫在 眉 睫 。 足 gd e ( ) c ( , 1 )=1 即与 ( q ( P一1 ( ) q一1互 素 ) ) ; () 4 计算 d 满足 d , e=1 m d ̄ n ) d称 为 私 ( od( ) (
请, 交纳一定的费用, 给纳税人增加了负担 , 制约 了 电子 网上 纳税 申报 的拓 展 。 中 国税 收 征 管 信 息 系
统 V . 在全 国上 线 , 2 0版 统一 了税收 征管 系统软 件 。
R A加密算 法 的过程 是 ¨ : S () 1 取两个 素 数 P和 q 保 密 ) ( ; () 2 计算 n=P ( q 1 为模 数 , 开 ) ( )= q称 公 , n
维普资讯
第 3 (0 7 第 3期 5卷 2 0 )
计算机与数字工程
1 9
快 速 素数 算 法 之 R A及 在税 收征 管 系统 中的应 用 S
彭接鑫 陈英 娟。 彭 接辉 彭接奉 ’ ’ ’
( 宜春市 国家税务局 宜春市农业银行 靖安气象局 靖安农业发展银行 宜春 36 0 ) 30 0
维普资讯
2 0
彭接鑫等 : 快速素数算 法之 R A及在税收征管系统 中的应用 S
第3 5卷
用户 B 。则 B可 以 : 取 两个 素数 P= 5和 q=1 ( 保密 )计算 n= q 1 ; P
=
和 q 保密 ) R A加 密 的关 键 。 ( 是 S 研究 表 明 : e可 设 为 K ( )+6 57 K 为 n 53 , 条件 。 满足 下列 条件 的素数 P和 q称 为安全 素数 :
上 纳税 申报数 字签 名 。 或 者私钥 都可 用作 加密 。用 你 的私钥 加 密文 件 , 你 目前 , 地 税 部 门各 地 方 自行 开发 网上 纳 税 就拥 有 安全 的数字 签名 。 国、 申报 软件 , 不少 地 方要 求纳 税 人在 C A论 证 中心 申 2 1 R A密钥产 生算 法 . S
中 图分 类 号 T 3 16 P 0 .
算法
税 收征管信息 系统
1 引言
信息 化时 代 , 电子 网上纳 税 申报 需求 1 。 电 3增
认 为是 目前最 优 秀 的公 钥 方 案之 一 。它 己被 IO S/ T9 C 7的数 据 加 密 技术 分 委 员 会 S 2 荐 为 公 开 C 0推 密钥 数 据加 密标准 。它 的基础 是 数论 的 欧拉 定理 ,
子 网上纳 税 申报需 要数 字 签 名 , 而 “ 收征 管 系 它 的安 全 l依 赖 于大数 的 因数分 解 的困难性 。 然 税 生 统 ”软 件多个 版 本 , 不 曾有 电子 网上 纳 税 申报 数 均 字 签名 。R A公 钥 密 码 体 制在 加 密 和 数 字 签 名 方 S
2 2 R A加密 解密 算法 . S
通过 引入 R A公钥密码体制对中国税收征管 S
进行 数字 签 名 。
信 息系统 V . 20版改 进 , 实现 对 电子 网上纳 税 申报 钥 , 密 ) 保 。
公钥密码体制加密采用公钥 , 解密采用私钥, 产 生 了 密钥 后 , 可 以对 明 文进 行 加 密 解 密 。 就 从 根本 上 克 服 了 传 统 密 码 体 制 的 缺 点 。 17 98年 利 用 R A加 密 第 一 步 需 要 将 明文 数 字 化 , 取 长 S 并 R A公钥 密码 系统是 由 R nRvs,A i hmi S o i t d a r和 度 小 于 lgn位 的数 字 做 明 文块 。加 密 算法 c=E e S o2
摘
要
R A算法是基于数论的公钥密码体制 , S 是公钥密码体 制 中最 优秀 的加 密算 法。根据素数 的陈 氏表示 法改进
R A公钥密码体制中的安全素数寻找方法 , 高 R A算法的运行速 度 , S 以提 S 并将其 R A公 钥密 码体制应 用于税 收征管信 息 S
系统 , 从而实现 了该系统的网上纳税 申报数字签名功能 。 关键词 R A 安全素数 S
LoadA l a 合 提 出 的 , 既 用 于 加 密 也 能 enr de n联 m 它 用于数 字 签 名 , S 算 法 从 提 出 到 现 在 已 二 十 多 RA 年, 经历 了各 种攻 击 的考验 , 逐渐 为人们 接受 , 普遍
( m)=m ( o ) e m dn
解 密算 法 D( ) d m dn c 兰c ( o ) 例如 , 假定 用户 A要 将 明文 “ I 加 密 传 递 给 H”
收 到本 文时间:06年 5月 2 20 9日 作 者简 介 : 彭接鑫 , , 男 硕士研究生 , 研究方 向: 计算机应用 技术 和数据安全 。陈英娟 , , 女 经济师 , 研究 方向 : 金融和 数据安全 。
2 R A算法及安全要求 S
R A密码系统为每个用户分配两对密钥( S 公钥
面广泛应用 , R A公 钥密码 体制引入 中国税收 将 S
征 管信息 系统 V . 中的 网上纳税 申报进 行数 字 20版
和私钥 ) 即( , ) d n , 中( , ) 于加密 , e n 和( , )其 en 用 签名势在必行 。本文讨论如何将 R A公钥密码体 报文 ,d n 用于解密报文 , S (, ) 广泛应用于加密和数 制应用 于在 中 国税 收征 管信 息 系统 V . 中的 网 字签名 , 20版 如现在已延伸到电子 网上纳税 申报。公钥