java pgp

公钥加密

这篇文章讨论了PGP或“很好的隐私”。 PGP是常规加密和公用密钥加密的混合实现。 在详细介绍PGP之前,让我们先谈谈公钥加密。

与其他任何加密技术一样,公钥加密解决了通过不安全介质传输安全数据的问题。 即互联网。 结果,该方案的目的是发送数据,以便只有预期的收件人才能阅读。

它通过使用非对称密钥加密来完成此任务。 它使用一对密钥进行加密:一个公共密钥,用于加密来自发送方的数据;一个“相应的”私有密钥,用于在接收端解密数据。 这些公钥/私钥在数学上是链接的,但已生成,因此它们都不是从另一个的知识派生而来(在计算上可行的)。 至少要等到最快的计算机问世的时候才能结束。 密钥基于数学关系(最著名的是整数分解和离散对数问题)。 但是,随着计算速度的加快,加密算法将始终需要变得更加复杂。

综上所述,公钥已发布并可用。 它使任何人都可以使用公钥加密数据,但是只有拥有私钥的一方才能解密数据。 公钥密码术的一大好处是,由于所有通信仅涉及公钥,并且从未传输或共享私钥,因此它使没有预先存在的安全性安排的各方能够以安全的方式交换消息。 公钥系统的一些常见示例是RSA(Rivest,Shamir和Adleman)和DSA(数字签名算法)。

PGP

PGP由Phil Zimmermann于1991年创建,它是一种混合的公共密钥加密/常规方案,其功能有所不同。 首先压缩明文或纯文本形式的邮件正文,然后再对其进行加密。 这种压缩不仅使文件更易于传输,而且增强了安全性。 当前,有一个负责维护该项目的标准机构: OpenPGP Alliance 。

压缩后,PGP然后创建一个会话密钥。 此会话密钥是一次一次性密钥,该密钥是通过鼠标的移动和键入的击键生成的。 使用该会话密钥,数据被加密以形成密文。 加密后,会话密钥将被加密为收件人的公共密钥,该公共密钥将绑定到用户名和/或电子邮件地址(稍后会对此进行详细介绍)。 此公钥与密文一起传输到收件人。

解密工作相反。 PGP的接收者副本使用用户私钥来恢复上面生成的会话密钥,以便解密密文。

除加密外,如果需要提供某种形式的验证,PGP还将加密功能强的哈希函数用于消息签名。 散列函数是一个采用可变长度输入(消息)并产生固定长度输出的过程。 说160位。 这称为消息摘要消息摘要的变化很小,而输入的变化很小。 然后,PGP使用摘要和私钥创建“签名”。 此外,该签名和纯文本被发送到接收者,接收者将需要重新计算摘要并验证签名。 同样,此消息的最轻微改动将更改已签名的文档并导致验证过程失败。

在Java中,也许最受欢迎的加密库提供程序是“ Bouncy Castle军团” 。

// insert code here
public class PGPExample {public static void encrypt()  {Security.addProvider(new BouncyCastleProvider());//Load Public Key FileFileInputStream key = new FileInputStream("res/keys/public.bpg");PGPPublicKey pubKey = KeyBasedFileProcessorUtil.readPublicKey(key);//Output fileFileOutputStream out = new FileOutputStream("target/enc.bpg");//Input fileString inputFilename = "src/main/resources/plaintext.txt";//Other settingsboolean armor = false;boolean integrityCheck = false;KeyBasedFileProcessorUtil.encryptFile(out, inputFilename, pubKey, armor, integrityCheck);   }
}

资源资源

  1. http://www.pgpi.org/doc/pgpintro/
  2. http://en.wikipedia.org/wiki/Pretty_Good_Privacy
  3. http://www.rossde.com/PGP/index.html#links
  4. http://www.openpgp.org/
  5. http://www.bouncycastle.org/java.html

参考:来自Reflective Thought.net的 JCG合作伙伴提供的Java和Pretty Good Privacy(PGP) 。

相关文章 :
  • 讨厌Java吗? 您正在打错仗。
  • 从敏捷开发中省钱
  • 选择一种新的编程语言来学习
  • 每个程序员都应该知道的事情

翻译自: https://www.javacodegeeks.com/2011/06/java-pretty-good-privacy-pgp.html

java pgp

java pgp_Java相当好的隐私(PGP)相关推荐

  1. Java加解密(八)PGP协议

    目录 PGP协议 1 PGP提供的操作 1.1 身份识别 1.2 机密性 1.3 机密性与鉴别 1.4 电子邮件的兼容性 1.5 压缩 1.6 分段和重装 2 加密密钥和密钥环 2.1 公钥环 2.2 ...

  2. Java对接阿里云号码隐私保护

    一.前期准备 阿里云号码隐私保护地址:https://help.aliyun.com/document_detail/110258.htm 二.目前需求概括 配送服务 需要将用户手机号脱敏处理 配送员 ...

  3. Java相当好的隐私(PGP)

    公钥加密 这篇文章讨论了PGP或"很好的隐私". PGP是常规加密和公用密钥加密的混合实现. 在详细介绍PGP之前,让我们先谈谈公钥加密. 与其他任何加密技术一样,公钥加密解决了通 ...

  4. java pgp 加密_java – 如何解密签名的pgp加密文件?

    如何使用BouncyCastle Java API解密和验证使用PGP加密的文件? 解决方法: 加密代码: private static void encryptFile(OutputStream o ...

  5. 数字身份 和 iot_数字身份的过去和现在

    数字身份 和 iot This piece is the first installment of a series on digital identity called "Please A ...

  6. Cookie与Session的区别

    本文分别对Cookie与Session做一个介绍和总结,并分别对两个知识点进行对比分析,让大家对Cookie和Session有一个更深入的了解,并对自己的开发工作中灵活运用带来启示. cookie机制 ...

  7. db h2 数据类型_H2数据库函数及数据类型概述-阿里云开发者社区

    H2数据库函数及数据类型概述 jieforest 2015-01-29 573浏览量 简介: H2数据库函数及数据类型概述 一.H2数据库常用数据类型 INT类型:对应java.lang.Intege ...

  8. 数据库连接查找不到数据库_查找具有受保护的健康信息的数据库

    数据库连接查找不到数据库 PII和PHI数据收集和存储正在扩展 身份盗用已经是金融业中的一个众所周知的问题,公司正在努力采取措施,尽其所能. 目前与医疗相关的欺诈行为尚处于萌芽状态(目前不到报告的医疗 ...

  9. 工控系统的全球安全现状:全球漏洞实例分析

    工控系统的全球安全现状:全球漏洞实例分析 一.摘要 ​ 运营技术(OT).网络和设备,即工业环境中使用的所有组件,在设计时并未考虑到安全性.效率和易用性是最重要的设计特征,然而,由于工业的数字化,越来 ...

最新文章

  1. IRNet:弱监督实例分割 | 步步为营,隔山打牛
  2. java代码上传到私服,java生成 java代码 上传maven私服
  3. Memcached常用操作
  4. 无序列表圆点变空心_前端HTML -- 列表标签
  5. Linux yum安装unrar、rar
  6. matlab插值:拉格朗日插值
  7. (阅读笔记)SecureNN: 3-Party Secure Computation for Neural Network Training
  8. JAVA SE程序设计及实践
  9. 【毕业答辩】毕业设计答辩的基本流程
  10. AFNetwork 2.0在请求时报错code=-1016 和 3840
  11. 药物临床试验数据分析(靶点|适应症|企业|登记信息)
  12. 日本诞生世界首个机器人农场,取代人工劳作
  13. 计算机一级Excel模拟考试题
  14. 服务器win10虚拟内存设置方法,win10虚拟内存怎么设置最好_win10虚拟内存设置多少好-win7之家...
  15. 一款耐压40V可以输出12V长时间5A的内置MOS 芯片QFN封装5*6
  16. 哈工大2020集合论与图论期末
  17. LCD、OLED以及Mini/Micro LED(未来显示屏的发展趋势)
  18. UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x98 in position 1093: illegal multibyte sequence
  19. python爬虫练习3:通过python爬取二手房源信息
  20. 文件服务器 api,文件服务器说明api · Issue #20 · timfaner/CKplanet · GitHub

热门文章

  1. Nginx中如何配置中文域名?
  2. 即日起,正式进入编程世界!
  3. ssm使用全注解实现增删改查案例——DeptMapperImpl
  4. Android 隐藏底部三个虚拟按键
  5. js 报错说此方法没定义 我明明定义了
  6. 计算机网络产生的历史背景,网络技术背景及sdn概述.pdf
  7. python开发stm32软件_ADB+Python+STM32 实现 微信跳一跳辅助
  8. java流与文件——内存映射文件
  9. java泛型程序设计——调用遗留代码
  10. 算法运行时间中的对数