RSA

RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。
RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

加密解密原理

密码学软件演示

  • 选取素数p、q,乘积为n
  • 欧拉公式ꚩ(n)=n-1,由此ꚩ(p)=p-1,ꚩ(q)=q-1,z=ꚩ(pq)=ꚩ(p)ꚩ(q)=(p-1)(q-1)
  • 选取e【公钥】,在1~z的范围选取公钥参数e,且e满足大公约数ged(ꚩ(n-1),e)=1,此时整数e用做加密钥(注意:e的选取是很容易的,例如,所有大于p和q的素数都可用)
  • (e*d)mod z=1,算得d【私钥】
  • 公开整数n和e,秘密保存d【私钥】(常用作签名)
  • 加密c=m^e mod n
  • 解密m=c^d mod n
  • 以上的fuding字符通过分段后一定是小于n的无符号整数类型

常见问题解答

  1. 非对称密码算法适用于哪种场合?

    答:非对称密码由于算法效率不高,适合传递内容少且比较私密的信息,比如AES算法中的秘钥;数字签名认证发布者身份真实性。

  2. 为什么RSA算法中即使公开公钥,也能保证私钥的安全?

    答:公钥是用来加密的秘钥,但也可以用来解密,一般情况下只使用于私钥一起生成的公钥来加密,于是与其一起生成的私钥只能用来解密,公布了公钥使任何人都可以使用公钥来加密,但解密只能是发布公钥的人来进行解密。

  3. RSA公钥如何公开?RSA私钥如何分发?

    答:RSA公钥公开就需要保证公钥不能被第三方篡改,就需要 PKI (Public Key Infrasture) 公钥基础设施来保证公钥的合法性,如果要使私钥进行分发,就要保证公钥不被传播出去,将私钥进行PKI (Public Key Infrasture) 公钥基础设施来保证私钥的合法性。

RSA签名

网上查资料说法应该是不止以下一种方案

密码学演示软件

  • MD5计算一个文件的摘要,得到(M)
  • 将摘要信息进行RSA算法的私钥加密,得到(S)
  • 将(S)附加到文件的末尾位置
  • 发布公钥和文件,接收者接收公钥和文件
  • 接受者利用公钥对文件末尾的(S)进行解密操作
  • 如果解密成功,则证明此文件属于文件的真实发布者所发布
  • 在接收者方再次将原文件进行MD5的摘要计算M‘,再将解密成功的MD5于M’进行对比,即可保证发送者发送的文件未被更改或损坏

常见问题解答

  1. RSA签名的数学背景是什么?
    答:利用两个大素数的乘积经过欧拉函数计算值z,再找到e必须于z互质,通过公式计算于e对应的d,如果只知道n和e是很难知道p和q,就无法知道z,就不能用公式反推出d。
  2. 签名信息的长短对RSA签名性能有什么影响?
    答:由于是RSA算法,如果签名信息过长则会导致效率不高。

恩格码