網站首頁 編程語言 正文
加密
數據加密?的基本過程,就是對原來為?明文?的文件或數據按?某種算法?進行處理,使其成為?不可讀?的一段代碼,通常稱為?“密文”。通過這樣的途徑,來達到?保護數據?不被?非法人竊取、閱讀的目的。
解密
加密?的?逆過程?為?解密,即將該?編碼信息?轉化為其?原來數據?的過程。
對稱加密和非對稱加密
加密算法分?對稱加密?和?非對稱加密,其中對稱加密算法的加密與解密?密鑰相同,非對稱加密算法的加密密鑰與解密?密鑰不同,此外,還有一類?不需要密鑰?的?散列算法。
常見的?對稱加密?算法主要有?
DES
、3DES
、AES
?等,常見的?非對稱算法?主要有?RSA
、DSA
?等,散列算法?主要有?SHA-1
、MD5
?等。?
對稱加密
對稱加密算法?是應用較早的加密算法,又稱為?共享密鑰加密算法。在?對稱加密算法?中,使用的密鑰只有一個,發送?和?接收?雙方都使用這個密鑰對數據進行?加密?和?解密。這就要求加密和解密方事先都必須知道加密的密鑰。?
-
數據加密過程:在對稱加密算法中,數據發送方 將 明文 (原始數據) 和 加密密鑰 一起經過特殊 加密處理,生成復雜的 加密密文 進行發送。
-
數據解密過程:數據接收方 收到密文后,若想讀取原數據,則需要使用 加密使用的密鑰 及相同算法的 逆算法 對加密的密文進行解密,才能使其恢復成 可讀明文。
非對稱加密
非對稱加密算法,又稱為 公開密鑰加密算法。它需要兩個密鑰,一個稱為 公開密鑰 (public key
),即 公鑰,另一個稱為 私有密鑰 (private key
),即 私鑰。
因為 加密 和 解密 使用的是兩個不同的密鑰,所以這種算法稱為 非對稱加密算法。
-
如果使用?公鑰?對數據?進行加密,只有用對應的?私鑰?才能?進行解密。
-
如果使用?私鑰?對數據?進行加密,只有用對應的?公鑰?才能?進行解密。
例子:甲方生成?一對密鑰?并將其中的一把作為?公鑰?向其它人公開,得到該公鑰的?乙方?使用該密鑰對機密信息?進行加密?后再發送給甲方,甲方再使用自己保存的另一把?專用密鑰?(私鑰),對?加密?后的信息?進行解密。
常見的簽名加密算法
MD5算法
MD5
?用的是?哈希函數,它的典型應用是對一段信息產生?信息摘要,以?防止被篡改。嚴格來說,MD5
?不是一種?加密算法?而是?摘要算法。無論是多長的輸入,MD5
?都會輸出長度為?128bits
?的一個串 (通常用?16
?進制?表示為?32
?個字符)。
SHA1算法
SHA1
是和 MD5
一樣流行的 消息摘要算法,然而 SHA1
比 MD5
的 安全性更強。對于長度小于 2 ^ 64
位的消息,SHA1
會產生一個 160
位的 消息摘要。基于 MD5
、SHA1
的信息摘要特性以及 不可逆 (一般而言),可以被應用在檢查 文件完整性 以及 數字簽名 等場景。
HMAC算法
HMAC
是密鑰相關的 哈希運算消息認證碼(Hash-based Message Authentication Code),HMAC
運算利用 哈希算法 (MD5
、SHA1
等),以 一個密鑰 和 一個消息 為輸入,生成一個 消息摘要 作為 輸出。
HMAC
發送方 和 接收方 都有的 key
進行計算,而沒有這把 key
的第三方,則是 無法計算 出正確的 散列值的,這樣就可以 防止數據被篡改。
HMAC
?算法實例在?多線程環境?下是?不安全的。但是需要在?多線程訪問?時,進行同步的輔助類,使用?ThreadLocal
?為?每個線程緩存?一個實例可以避免進行鎖操作。
?AES/DES/3DES算法
AES
、DES
、3DES
?都是?對稱?的?塊加密算法,加解密?的過程是?可逆的。常用的有?AES128
、AES192
、AES256
?(默認安裝的?JDK
?尚不支持?AES256
,需要安裝對應的?jce
?補丁進行升級?jce1.7
,jce1.8
)。
DES算法
DES
加密算法是一種 分組密碼,以 64
位為 分組對數據 加密,它的 密鑰長度 是 56
位,加密解密 用 同一算法。
DES
加密算法是對 密鑰 進行保密,而 公開算法,包括加密和解密算法。這樣,只有掌握了和發送方 相同密鑰 的人才能解讀由 DES
加密算法加密的密文數據。因此,破譯 DES
加密算法實際上就是 搜索密鑰的編碼。對于 56
位長度的 密鑰 來說,如果用 窮舉法 來進行搜索的話,其運算次數為 2 ^ 56
次。
3DES算法
是基于?DES
?的?對稱算法,對?一塊數據?用?三個不同的密鑰?進行?三次加密,強度更高。
AES算法
AES
加密算法是密碼學中的 高級加密標準,該加密算法采用 對稱分組密碼體制,密鑰長度的最少支持為 128
位、 192
位、256
位,分組長度 128
位,算法應易于各種硬件和軟件實現。這種加密算法是美國聯邦政府采用的 區塊加密標準。
AES
本身就是為了取代 DES
的,AES
具有更好的 安全性、效率 和 靈活性。
RSA算法
RSA
?加密算法是目前最有影響力的?公鑰加密算法,并且被普遍認為是目前?最優秀的公鑰方案?之一。RSA
?是第一個能同時用于?加密?和?數字簽名?的算法,它能夠?抵抗?到目前為止已知的?所有密碼攻擊,已被?ISO
?推薦為公鑰數據加密標準。
RSA
?加密算法?基于一個十分簡單的數論事實:將兩個大?素數?相乘十分容易,但想要對其乘積進行?因式分解?卻極其困難,因此可以將?乘積?公開作為?加密密鑰。
ECC算法
ECC
也是一種 非對稱加密算法,主要優勢是在某些情況下,它比其他的方法使用 更小的密鑰,比如 RSA
加密算法,提供 相當的或更高等級 的安全級別。不過一個缺點是 加密和解密操作 的實現比其他機制 時間長 (相比 RSA
算法,該算法對 CPU
消耗嚴重)。
各種加密算法對比
散列算法比較
對稱加密算法比較
?
非對稱加密算法比較?
總結
對稱算法
-
密鑰管理:比較難,不適合互聯網,一般用于內部系統
-
安全性:中
-
加密速度:快好?幾個數量級?(軟件加解密速度至少快?
100
?倍,每秒可以加解密數?M
?比特?數據),適合大數據量的加解密處理
非對稱算法
-
密鑰管理:密鑰容易管理
-
安全性:高
-
加密速度:比較慢,適合?小數據量?加解密或數據簽名
?
?
原文鏈接:https://blog.csdn.net/weixin_35973945/article/details/125794765
- 上一篇:feign調用傳遞請求頭
- 下一篇:借助Redis的過期機制和分布式鎖實現定時任務
相關推薦
- 2022-04-10 Blazor組件事件處理功能_基礎應用
- 2022-03-26 jquery對元素的基本操作實例分析_jquery
- 2022-06-16 VS?Code?C++環境的搭建過程_C 語言
- 2021-12-09 Quartz在.NET中的使用教程_實用技巧
- 2022-05-27 Python/R語言分別實現斐波那契數列的示例詳解_python
- 2022-06-22 Git常用命令匯總_其它綜合
- 2022-09-06 Go結構體SliceHeader及StringHeader作用詳解_Golang
- 2022-07-07 go語言中如何使用select的實現示例_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支