stm32f1HAL,80位rsa, 不使用大数运算库 1:已知两个40位素数与80位模数,生成公钥与私钥;2:传入私钥,完成加密
时间: 2024-05-20 16:12:30 浏览: 83
stm32实现rsa 64bit非对称加密解密和密钥产生算法
1. 生成公钥与私钥:
首先,我们需要生成两个40位的素数,可以使用随机数生成器生成,保证生成的数是素数。
接下来,我们需要计算模数,即两个素数的乘积,得到一个80位的模数。
然后,我们需要选择一个与模数互质的数作为公钥指数,一般选择65537。
接下来,我们需要计算私钥指数,即求出一个数d,使得(e*d) % φ(n) = 1,其中φ(n) = (p-1)*(q-1)是欧拉函数。
最后,我们就得到了公钥和私钥,其中公钥是(n, e),私钥是(n, d)。
2. 加密:
假设要加密的明文为m,加密后的密文为c,私钥为(n, d)。
首先,我们将明文m转换为一个整数M,保证M < n。
然后,我们对M进行加密,得到密文c,公式为:c = M^d % n。
最后,我们将密文c发送出去即可。
注意:为了保证安全性,生成素数和加密过程中的数学运算必须保密,不能让攻击者获取到这些信息。同时,为了保证加密的安全性,一般建议使用更长的RSA密钥长度。
阅读全文