开发者社区> 问答> 正文

请较为详细地描述rsa加密算法的全过程

请较为详细地描述rsa加密算法的全过程

展开
收起
知与谁同 2018-07-22 18:01:01 1831 0
1 条回答
写回答
取消 提交回答
  • 社区管理员
    RSA算法非常简单,概述如下:
    找两素数p和q
    取n=p*q
    取t=(p-1)*(q-1)
    取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1)
    取d*e%t==1

    这样最终得到三个数: n d e

    设消息为数M (M <n)
    设c=(M**d)%n就得到了加密后的消息c
    设m=(c**e)%n则 m == M,从而完成对c的解密。
    注:**表示次方,上面两式中的d和e可以互换。

    在对称加密中:
    n d两个数构成公钥,可以告诉别人;
    n e两个数构成私钥,e自己保留,不让任何人知道。
    给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。
    别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。

    rsa的安全性在于对于一个大数n,没有有效的方法能够将其分解
    从而在已知n d的情况下无法获得e;同样在已知n e的情况下无法
    求得d。

    rsa简洁幽雅,但计算速度比较慢,通常加密中并不是直接使用rsa 来对所有的信息进行加密,
    最常见的情况是随机产生一个对称加密的密钥,然后使用对称加密算法对信息加密,之后用
    RSA对刚才的加密密钥进行加密。

    最后需要说明的是,当前小于1024位的N已经被证明是不安全的
    自己使用中不要使用小于1024位的RSA,最好使用2048位的。
    2019-07-17 22:56:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载