博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PGP 简介
阅读量:4297 次
发布时间:2019-05-27

本文共 1334 字,大约阅读时间需要 4 分钟。

PGP 简介

什么是 PGP

PGP(Pretty Good Privacy,良好的隐私性)是由 Zimmermann 于 1991 年发布的一个完整的电子邮件安全软件包,提供了私密性、认证、数字签名和压缩功能。

PGP 使用 IDEA(International Data Encryption Algorithm,国际数据加密算法)128 位的块密码来加密数据,使用 RSA 来管理加密密钥,使用MD5 来保证数据完整性。

PGP 接收明文信息,最后输出一个签过名的密文,并且该密文是 Base64 格式。

PGP 原理

以 A 向 B 发送邮件来说明 PGP 原理,已知信息如下:

  • A 要发送的明文: P P P
  • A 的私钥和公钥: D a D_a Da E a E_a Ea
  • B 的私钥和公钥: D b D_b Db E b E_b Eb

PGP 运行步骤:

  1. 使用 MD5 算法计算出明文 P P P 的散列值 P m d 5 P_{md5} Pmd5
  2. 使用 A 的私钥 D a D_a Da P m d 5 P_{md5} Pmd5 进行加密,将加密的结果同 P 拼接在一起得到 P 1 P1 P1
  3. P 1 P1 P1 进行 ZIP 压缩,得到 P 1 z i p P1_{zip} P1zip
  4. 使用随机生成的 128 位密钥 K m K_m Km 根据 IDEA 算法对 P 1 z i p P1_{zip} P1zip 进行加密得到 P 2 P2 P2
  5. 使用 B 的公钥对密钥 K m K_m Km 进行加密,并将其与 P 2 P2 P2 进行拼接得到 P 3 P3 P3
  6. P 3 P3 P3 进行 Base64 编码,得到最终要发送的 ASCII 文本内容 P b a s e 64 P_{base64} Pbase64
  7. P b a s e 64 P_{base64} Pbase64 放在邮件体中,发送给 B,如此邮件内容有望不被记录或篡改的到达接收人
  8. B 接收到 PGP 邮件后,先做 Base64 解码,得到 P 3 P3 P3
  9. 在使用自己的私钥 D b D_b Db P 3 P3 P3 中的 K m K_m Km 解密出来
  10. 使用 K m K_m Km 解密 P 2 P2 P2 得到 P 1 z i p P1_{zip} P1zip
  11. P 1 z i p P1_{zip} P1zip 进行解压缩,得到 P 1 P1 P1
  12. 使用 A 的公钥对 P 1 P1 P1 中的签名进行解密,得到 P m d 5 P_{md5} Pmd5
  13. 对明文 P P P 进行 MD5 计算,并将结果同 P m d 5 P_{md5} Pmd5 进行比较
  14. 如此,便可以确定该信息是否被篡改,是否的确来自 A

在 PGP 的整个过程中,主要的且繁重的加密任务是由 IDEA 完成的,而 RSA 虽然耗时,但是其只是加密了 128 位的 MD5 散列值和 128 位的 IDEA 密钥,所以可以接受。

另外,可以根据需要选择 PGP 运行时使用的 RSA 密钥长度。

  • 临时(384位)
  • 商用(512位)
  • 军用(1024位)
  • 星际(2048位)

转载地址:http://utdws.baihongyu.com/

你可能感兴趣的文章
设计模式05_单例
查看>>
设计模式06_原型
查看>>
设计模式07_建造者
查看>>
设计模式08_适配器
查看>>
设计模式09_代理模式
查看>>
设计模式10_桥接
查看>>
设计模式11_装饰器
查看>>
设计模式12_外观模式
查看>>
设计模式13_享元模式
查看>>
设计模式14_组合结构
查看>>
设计模式15_模板
查看>>
海龟交易法则01_玩风险的交易者
查看>>
CTA策略02_boll
查看>>
vnpy通过jqdatasdk初始化实时数据及历史数据下载
查看>>
设计模式19_状态
查看>>
设计模式20_观察者
查看>>
vnpy学习10_常见坑
查看>>
vnpy学习10_常见坑02
查看>>
用时三个月,终于把所有的Python库全部整理了!拿去别客气!
查看>>
pd.stats.ols.MovingOLS以及替代
查看>>