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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374635.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374635.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374635.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HDU 5691 Sitting in Line 狀壓dp

Sitting in Line題目連接: http://acm.hdu.edu.cn/showproblem.php?pid5691 Description 度度熊是他同時代中最偉大的數學家,一切數字都要聽命于他。現在,又到了度度熊和他的數字仆人們玩排排坐游戲的時候了。游戲的規則十分簡單&#xff0c…

hello oc

printf("Hello C\n"); //OC可以采用C語言的輸出方式 printf("The number is %d\n",100);//%d 輸出數字 printf("Hello %s\n","XiaoMing");//%s 輸出字符 NSLog("Hello Objective-C"); //采用oc的輸出,前面帶了一…

Spring3 RESTful Web服務

Spring 3提供了對RESTful Web服務的支持。 在本教程中,我們將向您展示如何在Spring中實現RESTful Web服務 ,或者如何將現有的Spring服務公開為RESTful Web服務 。 為了使事情變得更有趣,我們將從上一篇關于Spring GWT Hibernate JPA Infinisp…

zoj 3765 塊狀鏈表 OR splay

各種操作o(╯□╰)o...不過都挺簡單&#xff0c;不需要lazy標記。 方法1&#xff1a;塊狀鏈表 塊狀鏈表太強大了&#xff0c;區間操作實現起來簡單暴力&#xff0c;效率比splay稍微慢一點&#xff0c;內存開銷小很多。 1 #include <iostream>2 #include <cstring>3…

【C#公共幫助類】 Image幫助類

大家知道&#xff0c;開發項目除了數據訪問層很重要外&#xff0c;就是Common了&#xff0c;這里就提供了強大且實用的工具。 【C#公共幫助類】 Convert幫助類 Image類&#xff1a; using System; using System.Collections.Generic; using System.Text; using System.IO; usin…

Java泛型快速教程

泛型是Java SE 5.0引入的一種Java功能&#xff0c;在其發布幾年后&#xff0c;我發誓那里的每個Java程序員不僅聽說過它&#xff0c;而且已經使用過它。 關于Java泛型&#xff0c;有很多免費和商業資源&#xff0c;而我使用的最佳資源是&#xff1a; Java教程 Java泛型和集合…

876. 鏈表的中間結點

給定一個頭結點為 head 的非空單鏈表&#xff0c;返回鏈表的中間結點。 如果有兩個中間結點&#xff0c;則返回第二個中間結點 代碼一&#xff1a; 自己想的一個方法 class Solution {public ListNode middleNode(ListNode head) {ListNode p1 head;ListNode p2 head;//i,j…

Hive查詢Join

Select a.val,b.val From a [Left|Right|Full Outer] Join b On (a.keyb.key); 現有兩張表&#xff1a;sales 列出了人名及其所購商品的 ID&#xff1b;things 列出商品的 ID 和名稱&#xff1a; hive> select * from sales; OK Joe 2 Hank 4 Ali 0 Eve 3 Ha…

jquery 獲取easyui combobox選中的值

$(#comboboxlist).combobox(getValue);轉載于:https://www.cnblogs.com/ftm-datablogs/p/5526857.html

調度Java應用程序中的主體

許多項目需要計劃功能&#xff0c;例如我們計劃的工作&#xff0c;重復的工作&#xff0c;異步執行等。 我們的首選方法是使用企業工作調度程序&#xff0c;例如OpenSymphony的Quartz。 使用計劃任務進行編碼時&#xff0c;最棘手的部分之一是執行部分。 這里的主要經驗法則是…

繼承映射關系 joinedsubclass的查詢

會出現下面這樣的錯一般是配置文件中的mapping和映射文件中的package路徑或者class中的name路徑不一致 org.hibernate.MappingException: Unknown entity: com.zh.hibernate.joinedsubclass.Student at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(Sessi…

Spark系列—02 Spark程序牛刀小試

一、執行第一個Spark程序 1、執行程序 我們執行一下Spark自帶的一個例子&#xff0c;利用蒙特卡羅算法求PI&#xff1a; 啟動Spark集群后&#xff0c;可以在集群的任何一臺機器上執行一下命令&#xff1a; /home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-submit \ --class o…

JVM選項:-client vs -server

您是否曾經在運行Java應用程序時想知道-client或-server開關是什么&#xff1f; 例如&#xff1a; javaw.exe -client com.blogspot.sdoulger.LoopTest也顯示在java.exe的“幫助”中&#xff0c;例如&#xff0c;其中的選項包括&#xff1a; -client選擇“客戶端” VM -serv…

網頁前臺小知識

1.左右布局div塊自適應&#xff0c;首先外邊套一個div,把寬度固定一個px&#xff0c;然后margin設為&#xff10; atuo&#xff1b;這樣他會根據窗口大小自動變換左右距離&#xff0e;就這么簡單&#xff1c;/p> 2.多個標簽共用一個樣式&#xff0c;用&#xff0c;分隔開 p…

統計字符串每個字符出現的次數

//str是個只包含小寫字母的字符串&#xff0c;以下是統計每個字符出現的頻數 int[] cnt new int[26];//toCharArray() for (char ch : str.toCharArray()) {cnt[ch - a]; }//charAt() for(int i 0;i<str.length;i){char ch str.charAt(i);cnt[ch - a]; }

在Java 7中處理文件

以下是The Well-Grounded Java Developer的草稿的修改后的片段。 它使您快速了解與以前版本相比&#xff0c;在Java 7中操作文件要容易得多。 通過使用新的Files類及其許多實用程序方法&#xff0c;您可以僅用一行代碼就可以對文件執行以下操作&#xff1a; 創建 刪除 復制 …

3.1存儲管理操作系統

存儲器管理的對象是主存&#xff08;內存&#xff09;。其主要功能包含分配和回收主存空間、提高主存的利用率、擴充主存、對主存信息實現有效保護。存儲器的結構為&#xff1a;寄存去、緩存、主存、外存。邏輯地址&#xff08;對用戶角度。程序存放的位置&#xff09;、物理地…

學習教材《構建之法》遇到的問題及思路

在學習中每個人都會遇到各種各樣的問題&#xff0c;下面就是我遇到的問題及可能解決問題的思路。 1.如何寫好程序的注釋&#xff0c;每個人都會寫注釋&#xff0c;但是&#xff0c;需要注釋什么&#xff1f; 思路&#xff1a;注釋是為了解釋程序做什么&#xff0c;為什么要這樣…

了解和擴展Java ClassLoader

Java ClassLoader是項目開發中Java的關鍵但很少使用的組件之一。 就我個人而言&#xff0c;我從未在任何項目中擴展ClassLoader&#xff0c;但是擁有自己的可以自定義Java類加載的ClassLoader的想法讓我感到很興奮。 本文將概述Java類加載&#xff0c;然后繼續創建自定義ClassL…

CAD教程-AL對其命令

AL可以實現不規則的對其功能 1.第一步按下AL&#xff0c;按下Enter 2.選擇第一個源點 3.選擇第一個目標點 4.選擇第二個源點 5.選擇第二個目標點 6.按下Enter&#xff0c;完成移位 轉載于:https://www.cnblogs.com/weloveshare/p/4739873.html