加密


加密

一.對稱加密

特點:
	加密和解密使用同一個秘鑰
存在的問題
	加密解密用同一個密鑰,被黑客攔截知道密鑰后安全喪失

二.非對稱加密

特點:
	加密和解密使用不同的秘鑰,一把作為公開的公鑰,另一把作為私鑰。公鑰加密的信息,只有私鑰才能解密。私鑰加密的信息,只有公鑰才能解密
	公鑰可以公開給別人進行加密,私鑰永遠在自己手里,非常安全,黑客攔截也沒用,因為私鑰未公開
	
存在的問題:
	相比於對稱加密,速度會比較慢一些

2.1 簡單原理

公鑰加密的數據無法使用公鑰反推出來,例如

A告訴B,公鑰是3233,17

假設B要傳的數據是44

那么根據公式計算

B就把678這個數字傳給A

上面說了,反着推是推不出來的

那A怎么解密呢?A自己還有一個密匙2753,用自己的密匙算一下就知道了

那為什么公鑰加密的信息可以通過私鑰解密?為什么公鑰加密很難反推出來?這個我就不知道了,我對這方面也沒什么興趣,感興趣的可以找一些大學公開課看看

2.2實際應用

此時還有一個問題,那就是

假如A與B進行通信,A持有私鑰,B持有公鑰

存在一個黑客C,可以截獲到AB之間發送的任何信息

那么C就可以知道B所持有的公鑰,從而知道A發送給B的任何信息

也就是B->A的信息他無法破解

​ 但A->B的信息他都能知道

這樣一來加密似乎沒什么意義

那么在實際的生產生活中解決方法是,使用非對稱傳遞對稱加密密鑰,然后使用對稱加密傳遞消息

(1) A需要在銀行的網站做一筆交易,他的瀏覽器首先生成了一個對稱密鑰

(2) A的瀏覽器向銀行的服務器請求非對稱加密公鑰

(3) 銀行系統自動生成一對非對稱密鑰,然后將其中的公鑰發送給A

(4) A的瀏覽器使用銀行發來的公鑰將自己之前生成的對稱密鑰加密

(5) A的瀏覽器將加密后的對稱密鑰發送給銀行

(6) 銀行使用私鑰解密得到A發來的對稱密鑰

(7) 之后,A與銀行使用對稱密鑰進行通信

三.hash散列

根據key值和hash函數計算得到一個計算結果,我們希望能夠達到的結果是

嚴格來說不算是加密

Hash算法特別的地方在於它是一種單向算法,用戶可以通過Hash算法對目標信息生成特定長度且唯一的Hash值,但不能通過這個Hash值重新獲得目標信息。因此Hash算法常用在不可還原的密碼存儲、信息完整性校驗等

MD5

簡介

MD5的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的字節串變換成一定長的十六進制數字串)。

特點

1、抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
2、強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。(不可逆)
3、壓縮性:任意長度的數據,算出的MD5值長度都是固定的128bit
4、容易計算:從原數據計算出MD5值很容易。

bcrypt

依賴

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
</dependency>

代碼

public class BcryptTest {
    public static void main(String[] args) {
        //用戶密碼
        String password = "123456";
        //密碼加密
        BCryptPasswordEncoder passwordEncoder=new BCryptPasswordEncoder();
        //加密
        String newPassword = passwordEncoder.encode(password);
        System.out.println("加密密碼為:"+newPassword);
        //對比這兩個密碼是否是同一個密碼
        boolean matches = passwordEncoder.matches(password, newPassword);
        System.out.println("兩個密碼一致:"+matches);
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM