5.5
实训主题:密码学(后续)
公钥加密算法
RSA算法的数学原理
- 阅读RSA.cpp中的代码,了解其实现方法。
- 调试运行RSA.cpp,选择两个不同的素数。
- 根据生成的d和e验证公式d×e ≡ 1 (mod (p-1)(q-1))。
- 输入要加密的数。
- 验证密钥是否有效(加密解密的计算过程和结果是否正确)。
利用RSA-Tool加密消息
- 运行RSA-Tool,点击Start按钮,滑动鼠标生成一个随机数。
- 点击Generate生成一对大质数p、q及N=p×q。
- 自己选定一个可用的整数e。
- 点击Calc.D生成d。
- 至此创建了一对公钥和私钥。
- 将公钥(N,e)发送给小伙伴,小伙伴利用该公钥进行消息加密并发回密文。
- 利用私钥对小伙伴发来的密文进行解密。
注:加密时仅需要e和N,解密时仅需要d和N。
利用RSA算法实现对称密钥的安全分配
- 小A同学准备一些文字(信件),选择一个密钥利用DES-Tool对文字进行加密得到密文1。
- 小B同学运行RSA-Tool,生成公钥和私钥,将公钥发送给小A同学,私钥自己留存。
- 小A同学利用小B同学的公钥对加密信件时使用的对称密钥进行加密,得到密文2。将密文1和密文2一同发送给小B同学。
- 小B同学首先用自己的私钥解密密文2,接着利用解密密文2得到的对称密钥在DES-Tool中解密密文1,得到原始文字内容。
- 具体流程可参考下图。
利用RSA算法生成数字签名
- 小A同学运行Hash-Tool,生成某文件的MD5值。
- 小A同学利用RSA Tool对生成的MD5值进行私钥加密(反向使用RSA算法,Generate生成密钥后将D和E交换位置,再用test进行加密)。
- 小A同学将公钥、文件和加密后的MD5一起发送给小B同学,由小B同学验证数字签名的正确性(软件中先激活test按钮,再填写公钥进行解密)。
- 具体流程可参考下图。