前言:
- RSA公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法。
- 易于理解和操作,所以十分流行。
- RSA算法就是素数的一个典型的应用。
什么是RSA:
- 在计算机中常用的加密解密技术分为两类,即对称加密和非对称加密。对称加密,非对称加密上上一篇博文里进行了浅析,有兴趣可以查阅:安全加密
- 在对称加密技术中,对信息的加密和解密都使用相同的秘钥key,也就是说使用同一个秘钥key对数据进行加密和解密。这种加密方法可简化加密解密的处理过程,信息交换双方不必彼此研究和交换专用的加密解密算法。如果在交换阶段,秘钥key没有泄露,那么加密数据的机密性和报文的完整性就可以得到保证。
- 对称加密技术虽然简单,但是存在一些不足,由于加密、解密都需要使用同一个key,这样,信息传送双方都需要接触这个key,秘钥key更容易泄露。
- 而非对称加密(又称为公开秘钥加密)中,不再只有一个秘钥key了。在非对称加密算法中,秘钥被分解为一对,一个成为公开秘钥(简称公钥PK),另一个成为私有秘钥(简称私钥)。对应公钥,可以通过非保密方式向他人公开,而私钥则由解密方保存,不用对别人公开。
- 发送消息的一方通过公钥对数据进行加密,然后发给接收方。接收方通过私钥对密文进行解密。
- 由于非对称加密方式可以使通信双方无需事先交换秘钥就可以建立安全通信,因此被广泛用于身份认证、数字签名等信息交换领域。
- 非对称加密体系一般是建立在某些已知的数学难题上,是计算机复杂性理论发展的必然结果。最具有代表性的非对称加密方式就是RSA公钥密码体制。
RSA算法基础
1.生成公钥和私钥:
(1)随意选择两个大的素数P 和 Q,P不等于 Q
(2)将P、Q 两个素数相乘得到一个数N,即N=PQ
(2)将P、Q 分别减一,再相乘,得到一个数 T,即T=(P-1)(Q-1)
(3)选择一个整数E,作为一个秘钥,使得E 与T 互质(即ET的最大公约数为 1),且E 必须小于T
(4)根据公式DE mod T ≡ 1,计算出D 的值,作为另一个秘钥
(5)通过以上步骤计算得出N、E、D 这三个数据,其中(N、E)作为公钥,(N、D)作为私钥 (公私钥交换也是ok的).
(6)0生成公钥私钥后,就可以将公钥对外公布了
步骤图示:
2.用公钥加密信息:
发送信息的一方收到公钥PK 后,就可以通过公钥PK 对数据进行加密。加密的操作步骤如下,其中明文为M, 加密后得到的密文为C,公钥为(N,E)
3.用私钥解密信息:
接收方持有私钥(N,D),在接收到密文C 后,即可通过私钥进行解密,得到明文M
![]()
RSA算法实践
了解RSA的算法生成秘钥、加密、解密的过程后,现在进一步了解RSA的算法使用过程吧。
1.生成公钥PK和私钥SK:
2.用公钥加密:
为方便计算,取上面的(143,103)为公钥,(143,7)为私钥。
并假定明文为2,加密过程如下:
3.用私密解密
收到密文C(即63)后,则根据私钥(143,7)进行解密,解密过程如下:
小结:
从上面生成的密文、加密、解密的过程可以看出,虽然我们只是使用了两个小的素数11,13,但是计算量非常大,特别是加密和解密过程中,需要进行幂运算,得到的结果将是一个非常大的整数。在实际应用中,如果P、Q取很大值得素数,则得到的N、D、E 值也将会很大,所以在加密、解密过程的幂运算结果将会更加大。通过C语言提供的基本数据类型已经没有办法保存这么大的数了。
本文介绍了RSA公钥加密算法的基本原理和实现过程,包括如何生成公钥和私钥,以及如何使用公钥加密和私钥解密信息。RSA算法依赖于大素数的性质,确保了加密的安全性。尽管示例中使用的是较小的素数,但在实际应用中,为了保证安全性,会使用更大的素数进行计算,这需要更高级的数据处理能力。
2801

被折叠的 条评论
为什么被折叠?



