Java 常用的兩種加密原理

2020-12-25 野生程式設計師

加密定義:

.

1.對稱加密:需要對加密和解密使用相同密鑰的加密算法。由於其速度快,對稱性加密通常在消息發送方需要加密大量數據時使用。對稱性加密也稱為密鑰加密。所謂對稱,就是採用這種加密方法的雙方使用方式用同樣的密鑰進行加密和解密。密鑰是控制加密及解密過程的指令。算法是一組規則,規定如何進行加密和解密。加密的安全性不僅取決於加密算法本身,密鑰管理的安全性更是重要。因為加密和解密都使用同一個密鑰,如何把密鑰安全地傳遞到解密者手上就成重中之重的問題。在對稱加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。

2.非對稱加密:在通信雙方,如果使用非對稱加密算法,一般遵從這樣的原則:公鑰(publickey)加密,私鑰(privatekey)解密。同時,一般一個密鑰加密,另一個密鑰就可以解密。因為公鑰是公開的,如果用來解密,那麼誰都可以解密消息,那麼私鑰和公鑰沒什麼區別了。因此,私鑰也可以認為是個人身份的證明。非對稱加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等。

.

3.數字摘要:數字摘要是將任意長度的消息變成固定長度的短消息,它類似於一個自變量是消息的函數,也就是Hash函數。數字摘要就是採用單向Hash函數將需要加密的明文「摘要」成一串固定長度(128位)的密文這一串密文又稱為數字指紋,它有固定的長度,而且不同的明文摘要成密文,其結果總是不同的,而同樣的明文其摘要必定一致。

4.數字籤名:數字籤名,就是只有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明,一次數字籤名涉及到一個哈希函數、接受者的公鑰、發送者的私鑰。

5.數字證書:是一個經證書授權中心(CertificateAuthority)數字籤名的包含公開密鑰擁有者信息以及公開密鑰的文件。最簡單的證書包含一個公開密鑰、名稱以及證書授權中心的數字籤名,有效期。

使用原理:

1.對稱加密:甲和乙是一對生意搭檔,他們住在不同的城市。由於生意上的需要,他們經常會相互之間郵寄重要的貨物。為了保證貨物的安全,他們商定製作一個保險盒(即經過算法加密),將物品放入其中。他們打造了兩把相同的鑰匙(雙方持有對稱、相同的秘鑰)分別保管,以便在收到包裹時用這個鑰匙打開保險盒,以及在郵寄貨物前用這把鑰匙鎖上保險盒。這樣看來也印證上面所說的對稱加密最重要的問題在於如何將「鑰匙」安全的送達並保存。

2.非對稱加密:A和B兩家公司,需要交流重要信息(比如交易金額發起和交易結果通知)。A需要保證自己的發起金額準確,必須進行信息加密,B公司是實際金額的操作者(幫A公司代收代付),A使用B給的公鑰加密數據,B使用自己的私鑰解密執行金額交易。這樣只有和B公司合作的並持有B公司發放的公鑰才能發起交易。反之,A公司也只識別自己給了公鑰的B公司加密的數據。這樣就是最基本的非對稱加密的用法。但是有一個新的問題是,假如同樣持有B公司公鑰的C公司模擬或從中修改了A公司發起數據並加密傳給了B,B不知道是C偽造的執行了操作就會給A帶來經濟損失。所以新的問題出現了:身份認證和信息完整性必須驗證!

.

A:將被發送文件用SHA編碼加密產生128bit的數字摘要,用自己的私用密鑰對摘要再加密,這就形成了數字籤名。然後將使用B公鑰加密的密文和加密的摘要同時傳給B。

B:用A公共密鑰對數字籤名解密(這裡保證了只有A的身份),同時對收到的密文使用自己的私鑰解密,在用SHA編碼加密產生又一摘要。將解密後的摘要和用SHA編碼加密產生的又一摘要相互對比。如兩者一致,則說明傳送過程中信息沒有被破壞或篡改過(這裡保證了數據的完整性)。

至此,AB互有一對公私鑰,這樣就保證了信息都是對方加密的密文,別人看不了,也無法修改。但是有一個新的問題:假如擁有B公鑰的C公司偷換了A放在B公司的A的公鑰,換成自己的C的公鑰,然後模擬A發送信息,這樣一樣會讓B不知道是A發起的交易!引入新的概念:數字證書。A的公鑰經過了公證,這就可以保證B使用公鑰解開的數字籤名肯定是A的數字籤名。

作者:song2song

相關焦點

  • JAVA開發中常用的四種加密方法
    base64加密工具類Bcrypt工具類二、加密測試MD5加密測試base64加密測試SHA加密測試BCrypt加密測試一、工具類1. md5加密工具類package 加密Tester.util;import java.security.MessageDigest
  • java最常用的幾種加密算法
    將數據(如漢字)運算為另一固定長度值,是雜湊算法的基礎原理,MD5的前身有MD2、MD3和MD4。廣泛用於加密和解密技術,常用於文件校驗。校驗?不管文件多大,經過MD5後都能生成唯一的MD5值。好比現在的ISO校驗,都是MD5校驗。怎麼用?當然是把ISO經過MD5後產生MD5的值。一般下載linux-ISO的朋友都見過下載連結旁邊放著MD5的串。就是用來驗證文件是否一致的。
  • RSA 加密是什麼原理?
    RSA是一個非對稱加密的系統,意思是說它有一對密鑰,也就是一個公鑰和一個私鑰。你保管好私鑰,然後公鑰可以隨意的分發出去。數據通過公鑰加密,私鑰解密。反之亦然。正是由於這種特性,在不洩漏私鑰的情況下,中間人只通過公鑰無法竊取到信息。
  • 考考基礎部分,談談Java集合中HashSet的原理及常用方法
    HashSet概述 HashSet是Java集合Set的一個實現類,Set是一個接口,其實現類除HashSet之外,還有TreeSet,並繼承了Collection,HashSet集合很常用,同時也是程式設計師面試時經常會被問到的知識點,下面是結構圖
  • Java枚舉(Enum)類型原理探求
    在程序語言中,枚舉類型是一種特殊的數據類型(常用的數據類型比如字符串、整型),這種數據類型的變量值限定在固定的範圍, 比如季節只有春夏秋冬,月份是12個。Java中的枚舉枚舉前時代在Java語言中, 枚舉類型從JDK1.5才開始提供。
  • 一個Java高級工程師的進階之路
    精通使用一種或兩種框架像在《如何成為java初級程式設計師》中提到的那樣,「框架都會有許多可重用的代碼,良好的層次關係和業務控制邏輯,基於框架的開發使你可以省出很多的開發成本」。但我這裡希望您能精通,更多的是希望您能通過框架的使用了解框架的思想。
  • 5款新手常用的java編程工具,有你正在用的嗎?
    文:源碼時代新手如果想成為一名合格的java程式設計師工程師,不但要熟練使用各種框架,而且還有明白框架是如何實現的各種原理,例如像jvm虛擬機的原理,優化,熟練掌握jvm能讓你寫出性能更好的代碼,還有池技術,對象池,線程池等,目前人們對java編程的關注也越來越火熱,很多人對編程有很大的興趣,也想知道有哪些好用的java編程工具,接下來就為大家介紹幾款常用的相關編程工具
  • 阿拉丁HASP加密狗加密鎖
    全球第一的軟體DRM解決方案-阿拉丁HASP SRM加密鎖(加密狗)2002年以後,據美國IDC統計,Aladdin 的HASP 加密鎖全球市場佔有率第一,2006和2008年獲得了科迪獎(codie),2007年獲得了frost&sullivan的產品革新獎,這些頒發獎項的機構都是獨立評判的,都有相應的說明文檔,目前有IBM、HP、漢王、方正科技、工控軟體、醫療軟體、呼叫中心軟體等都在使用阿拉丁加密鎖,國內的速達軟體、金蝶等都在測試我們的最新版本HASP
  • 非對稱加密算法——RSA加密原理及數學推導
    二、  密碼學相關介紹現如今流行的加密算法主要有三大類:對稱加密算法、非對稱加密算法以及哈希算法(確切的說哈希算法不算是加密算法,因為加密算法有加密和解密兩個過程,而Hash算法是單向的,或者說是不可逆的,也是由於其單向,不容易解密,所以在實際中有很大的用途,比如熟知的MD5算法)。
  • Java 開發中常用的 4 種加密方法
    base64加密工具類3.Bcrypt工具類二、加密測試1. MD5加密測試2. base64加密測試3. SHA加密測試4.BCrypt加密測試一、工具類1. md5加密工具類public class MD5Utils { private static final String hexDigIts[] = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
  • java基礎教程:Collection集合,Collection 常用API
    集合:集合是java中提供的一種容器,可以用來存儲多個數據。集合和數組既然都是容器,它們有什麼區別呢?數組的長度是固定的。集合的長度是可變的。數組中存儲的是同一類型的元素,可以存儲任意類型數據。集合存儲的都是引用數據類型。如果想存儲基本類型數據需要存儲對應的包裝類型。
  • Java面試的的時候你被提過哪些問題?
    20. java多態的實現原理。21. 實現多線程的兩種方法:Thread與Runable。22. 線程同步的方法:sychronized、lock、reentrantLock等。23. 鎖的等級:方法鎖、對象鎖、類鎖。24. 寫出生產者消費者模式。25. ThreadLocal的設計理念與作用。
  • Java利用DES / 3DES / AES這三種算法分別實現對稱加密
    注意,這可不是我說的,是無數程式設計師總結的,話說的很實在也很精闢,若想長久可持續發展,多研究算法還是很有必要的,今天我給大家說說加密算法中的對稱加密算法,並且這裡將教會大家對稱加密算法的編程使用。包含DES、3DES和AES三種對稱加密算法的編程使用,乾貨滿滿。
  • 保護自己的Java Android源碼 Allatori混淆器試用
    Flow Obfuscation:流程混淆一般來說,Java裡常用的就是循環、條件和順序,然而Allatori卻可以對流程進行混淆。通過對流程進行混淆, 大部分的反編譯工具基本上就趴窩了。上例子:java.lang.NullPointerExceptionat com.company.c.a(Util.java:38)at com.company.b.b(TraceTest.java:53)at com.company.b.a(TraceTest.java:14)at com.company.a.a
  • Java程式設計師常用的軟體
    java程式設計師常用的軟體一、常用的開發工具(1)Eclipse(2)IntelliJ IDEAIDEA 全稱 IntelliJ IDEA,是java語言開發的集成環境,IntelliJ在業界被公認為最好的java開發工具之一,尤其在智能代碼助手、代碼自動提示、重構、J2EE支持、Ant、JUnit、CVS整合、代碼審查、 創新的GUI設計等方面的功能可以說是超常的。
  • Java加密與解密:消息摘要算法MD5
    MD2和MD5算法實現:package com.code;import java.security.MessageDigest;>import javax.xml.bind.annotation.adapters.HexBinaryAdapter;public class MDCoder {// MD2加密 public static String encodeMd2(byte[] data
  • java面試題總結:java的接口類和抽象類的特點
    java的接口類和抽象類的特點java中抽象類的特點:
  • java 集合類之List(二)
    引言昨天介紹了java集合類框架,接下來會詳細聊一下各個集合類的適用場景和需要注意的地方。今天主要介紹一下List,如有錯誤之處,還望指正。ListList 是java集合中最簡單,也是最常用的一種集合。List存儲的是一種有序、不重複的數據。比如產品列表、商品列表等等。
  • Java中的字符串常用方法
    4.常見String類的其他常用功能public String replace(char old,char new) 將指定字符進行互換public String replace(String old,String new) 將指定字符串進行互換
  • 網絡安全加密——DES、AES、RSA、Base64、MD5加密原理介紹,代碼實現
    本專題將連續的、全方位的、深入地闡述網絡安全加密的原理及實用案例分析,希望對學習網絡安全的你有幫助,覺得有用記得轉發給身邊需要的朋友哈~~ 學好密碼技術變身信息安全保護神,科普式教學的《現代密碼學》全新上線,乾貨+視頻,學習效果槓槓滴,別說小編沒告訴你~特別感謝本期作者——時間已靜止。