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