大家好,今天小编关注到一个比较有意思的话题,就是关于rsa c语言的问题,于是小编就整理了4个相关介绍rsa c语言实现的解答,让我们一起看看吧。
- openssl使用详解?
- RSA怎样设置公钥和私钥?
- 在一个使用RSA的公开密钥系统中,你截获了发给一个其公开密钥是e=5?
- 详细介绍RSA加密算法(数学原理,实现过程),并举例说明如何将一个简单的明文利用此算法进行加密?
openssl使用详解?
1. 首先需要使用 openssl 生成一个 2048 位的密钥 rsa.key 文件 (rsa.key 密钥文件中包含了私钥和公钥)
2. 然后从 rsa.key 密钥文件中提取出公钥 pub.key
3. 使用 pub.key 公钥加密一个文件 (data.zip 为原始文件,back.zip 为加密之后的文件)
4. 使用 rsa.key 私钥解密一个文件 (back.zip 为加密的文件,data.zip 为解密之后的文件)
5.上面的加密对大文件就不适用了,可以考虑使用
RSA怎样设置公钥和私钥?
根据计算的值。
公钥
私钥
加密过程 (C为密文,P为明文):
解密过程
秘钥中和的地位是对等的,在足够大的时候,知道其中一个,并不能在多项式时间内计算出另一个的值。
也就是说,你可以任意选择一个秘钥公开,然后将这个秘钥作为公钥,将另外一个作为私钥。
但是在实际的使用中,通常,如果是真·随机选取的话,在加解密、签名验证的过程中大概会有超过1000次的模乘运算,所以,在
RFC 2313 - PKCS #1: RSA Encryption Version 1.5
中,建议公钥的的值选择是3或65537()。这样,公钥加密、私钥签名的模乘运算次数可以降低到2次()和17次(),可以显著的提高在实际应用中RSA算法的效率。在一个使用RSA的公开密钥系统中,你截获了发给一个其公开密钥是e=5?
解密密钥:{d,n}={d,35}, 密文:C=10, 选择两个素数:p=5,q=7,则n=35=5*7。 计算φ(p-1)(q-1)=(5-1)(7-1)=24,在[0,23]中选择一个和24互素的数,本题选e=5,得5*d=l mod 24,解出d。不难得出,d=5,因为e×d = 5×5 = 25 = 1*24+1=1 mod 24。 因为:m=Cd(mod n) 所以,m=Cd(mod n)=5。
详细介绍RSA加密算法(数学原理,实现过程),并举例说明如何将一个简单的明文利用此算法进行加密?
RSA取自三个发明者罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)名字的首字母,1***7年提出至今仍被广泛应用,是一种非对称加密算法。
RSA算法基于的原理,基本上来说,加密和解密数据围绕着模幂运算,这是取模计算中的一种。取模计算是整数计算中的一种常见形式。x mod n的结果就是x / n的余数。比如,40 mod 13 = 1,因为40 / 13 = 3,余数为1。模幂运算就是计算a mod n的过程。
使用RSA算法对数据进行加密和解密,首先要确定分组的大小。为了实现这一步,必须确保该分组可以保存的最大数值要小于n的位数。比如,如果p和q都是200位数字的素数,则n的结果将小于400位。因而,所选择的分组所能保存的最大值应该要以是接近于400。在实践中,通常选择的位数都是比n小的2的整数次幂。比如,如果n是209,要选择的分组大小就是7位,因为2 = 128比209小,但2 = 256又大于209。
要从缓冲区M中加密第(i)组明文M,使用公钥(e,n)来获取M的数值,对其求e次幂,然后再对n取模。这将产生一组密文C。对n的取模操作确保了C将和明文的分组大小保持一致。因而,要加密明文分组有:
C = M mod n
之前提到过,欧拉函数是***用幂模运算来加密数据的基础,根据欧拉函数及其推导式,能够将密文解密回原文。
要对缓冲区中C中的第(i)组密文进行解密,使用私钥(d,n)来获取C的数值部分,对其求d次幂,然后再对n取模。这将产生一组明文M。因此,要解密密文分组有:
M = C mod n
图示:***用平方-乘算法来计算模幂
授人以鱼不如授人以渔,以上资料整理自网络,谢谢。
到此,以上就是小编对于rsa c语言实现的问题就介绍到这了,希望介绍关于rsa c语言实现的4点解答对大家有用。