公钥加密

这篇文章讨论了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)相关推荐

  1. java:阿里云号码隐私服务使用

    阿里云号码隐私服务使用 产品最近的需求是,客户通过短链接点过预约之后,门店店员收到意向后联系客户进行引导,同时要对双方的号码进行隐私保护 (前提:入驻阿里云,获取阿里云访问密钥,开通号码隐私保护服务) ...

  2. java、python--差分隐私拉普拉斯分布(Laplace)实现

    近在研究差分隐私,先用java实现了拉普拉斯分布,做了个Hive交互式接口.后来又用python画图,准备做个非交互式数据发布. 差分隐私的原理我先简单介绍一下,Apple 用它来实现信息安全.这里举 ...

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

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

  4. 限制会话id服务端不共享_会话控制 - able-woman - 博客园

    会话控制是什么? cookie和session都是跟踪整个会话过程的技术手段.而会话,就是用户通过浏览器和服务器的一次通话. 为什么要有会话控制? 因为HTTP协议是无状态的,服务器不知道用户上一次做 ...

  5. cookie与session区别|详细版

    cookie与session区别|详细版,VMlogin浏览器支持cookie导入导出吗 Cookie: Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器.IETF R ...

  6. 读书笔记 --- [基础知识点] 小结3

    1. cookie与session的区别 参考 cookie机制 Cookie是服务器在本地机器上存储的小段文本,并随每一次发送至同一个服务器.网络服务器用HTTP头向客户端发送cookies,在客户 ...

  7. [转帖]Cookies和Session的区别和理解

    https://www.toutiao.com/a6580918457276039684 官方理解: cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器 ...

  8. openPGP加密解密

    首先请大家一定要搞清楚加密解密概念: 下面这是百度出来的. 如果只是单方面采用非对称性加密算法,其实有两种方式,用于不同用处. 第一种是签名,使用私钥加密,公钥解密,用于让所有公钥所有者验证私钥所有者 ...

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

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

最新文章

  1. R语言绘制韦恩(venn)图
  2. Windows 服务入门指南
  3. 从FTP建立连接模式想到的TCP SYNFlood防御
  4. gcc/g++ 以及makefile
  5. 【数学建模】聚类分析(评价与决策)
  6. Asp.Net Core 404处理
  7. main spring启动_SpringBoot学习(一):为什么main方法启动类需要放在项目根目录...
  8. AspnetCore 2.0 自动API文档生成组件,支持protobuffer
  9. 深入开展计算机设备保密检查,江西安远县检察院深入开展网络安全保密自查工作...
  10. 【pyQT5】Python3+pyQT5开发环境安装与配置
  11. python中 yield 的用法详解——最简单,最清晰的解释(排序节省内存消耗)
  12. 狱警讲述死刑_BDFL是死刑吗?
  13. 南京林业大学计算机专业分数线,2021南京林业大学录取分数线_历年各专业分数线(2017-2020),各省投档线_一品高考网...
  14. Java 学习之反射机制“解刨”分解类,并获取内容!
  15. 爱python的胖虾_爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了!
  16. mysql批量修改表中大小写_SQL语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写...
  17. 市场调研-全球与中国天线测量系统市场现状及未来发展趋势
  18. 科沃斯扫地机器人无语音提示_科沃斯扫地机器人语音功能,科技or鸡肋?
  19. CTF 小白教程《从0到1:CTFer成长之路》SQL - 2 解题过程
  20. 抽象代数之三次方程的求根公式和构造一类整系数三次方程

热门文章

  1. Thread打印值的含义
  2. java改变变量编码方式_Java 10将如何改变您的编码方式
  3. intellij idea_IntelliJ IDEA内部设计
  4. ef ddl生成不了脚本_如何使用Hibernate从Play生成DDL脚本! 框架项目
  5. formlayout_精简SWT FormLayout的用法
  6. js 实现轻量ps_简单轻量的池实现
  7. 使用Spring Security,Thymeleaf和Okta保护Java应用程序的安全
  8. glassfish_多种监视和管理GlassFish 3的方法
  9. 设计模式 原型模式_原型设计模式:创建另一个小车
  10. 法线有接缝_发送带有接缝的活动邀请