# RSA算法 **Published by:** [jeremy](https://paragraph.com/@islet/) **Published on:** 2022-08-05 **URL:** https://paragraph.com/@islet/rsa-2 ## Content RSA包含加密算法和签名算法。 一、加密算法(有密文明文) RSA公钥加密体制包含如下3个算法: KeyGen(密钥生成算法) Encrypt(加密算法) Decrypt(解密算法) 密钥生成算法以安全常数作为输入,输出一个公钥PK,和一个私钥SK。安全常数用于确定这个加密算法的安全性有多高,一般以加密算法使用的质数p的大小有关。越大,质数p一般越大,保证体制有更高的安全性。在RSA中,密钥生成算法如下:算法首先随机产生两个不同大质数p和q,计算N=pq。随后,算法计算欧拉函数。接下来,算法随机选择一个小于的整数e,并计算e关于的模反元素d。最后,公钥为PK=(N, e),私钥为SK=(N, d)。。 1.加密算法以公钥PK和待加密的消息M作为输入,输出密文CT。 2.解密算法以私钥SK和密文CT作为输入,输出消息M。 二、签名算法(只有明文) RSA签名体制。签名体制同样包含3个算法: KeyGen(密钥生成算法) Sign(签名算法) Verify(验证算法) 密钥生成算法同样以安全常数作为输入,输出一个公钥PK和一个私钥SK。在RSA签名中,密钥生成算法与加密算法完全相同。 1.签名算法以私钥SK和待签名的消息M作为输入,输出签名。注意,签名算法和RSA加密体制中的解密算法非常像。。 2.验证算法以公钥PK,签名以及消息M作为输入,输出一个b。b=1意味着验证通过。b=0意味着验证不通过。注意:验证算法和RSA加密体制中的加密算法非常像。 ## Publication Information - [jeremy](https://paragraph.com/@islet/): Publication homepage - [All Posts](https://paragraph.com/@islet/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@islet): Subscribe to updates - [Twitter](https://twitter.com/JJlin97600014): Follow on Twitter