日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅谈加密算法

發(fā)布時(shí)間:2025/5/22 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈加密算法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

數(shù)字簽名、信息加密 是前后端開發(fā)都經(jīng)常需要使用到的技術(shù),應(yīng)用場(chǎng)景包括了用戶登入、交易、信息通訊、oauth 等等,不同的應(yīng)用場(chǎng)景也會(huì)需要使用到不同的簽名加密算法,或者需要搭配不一樣的 簽名加密算法 來達(dá)到業(yè)務(wù)目標(biāo)。這里簡(jiǎn)單的給大家介紹幾種常見的簽名加密算法和一些典型場(chǎng)景下的應(yīng)用。
正文
1. 數(shù)字簽名

數(shù)字簽名,簡(jiǎn)單來說就是通過提供 可鑒別 的 數(shù)字信息 驗(yàn)證 自身身份 的一種方式。一套 數(shù)字簽名 通常定義兩種 互補(bǔ) 的運(yùn)算,一個(gè)用于 簽名,另一個(gè)用于 驗(yàn)證。分別由 發(fā)送者 持有能夠 代表自己身份 的 私鑰 (私鑰不可泄露),由 接受者 持有與私鑰對(duì)應(yīng)的 公鑰 ,能夠在 接受 到來自發(fā)送者信息時(shí)用于 驗(yàn)證 其身份。

注意:圖中?加密過程?有別于?公鑰加密,更多?介紹戳這里。簽名?最根本的用途是要能夠唯一?證明發(fā)送方的身份,防止?中間人攻擊、CSRF?跨域身份偽造?;谶@一點(diǎn)在諸如?設(shè)備認(rèn)證、用戶認(rèn)證、第三方認(rèn)證?等認(rèn)證體系中都會(huì)使用到?簽名算法?(彼此的實(shí)現(xiàn)方式可能會(huì)有差異)。

2. 加密和解密
2.1. 加密

數(shù)據(jù)加密 的基本過程,就是對(duì)原來為 明文 的文件或數(shù)據(jù)按 某種算法 進(jìn)行處理,使其成為 不可讀 的一段代碼,通常稱為 “密文”。通過這樣的途徑,來達(dá)到 保護(hù)數(shù)據(jù) 不被 非法人竊取、閱讀的目的。
2.2. 解密

加密 的 逆過程 為 解密,即將該 編碼信息 轉(zhuǎn)化為其 原來數(shù)據(jù) 的過程。
3. 對(duì)稱加密和非對(duì)稱加密

加密算法分 對(duì)稱加密 和 非對(duì)稱加密,其中對(duì)稱加密算法的加密與解密 密鑰相同,非對(duì)稱加密算法的加密密鑰與解密 密鑰不同,此外,還有一類 不需要密鑰 的 散列算法。

?

常見的 對(duì)稱加密 算法主要有 DES、3DES、AES 等,常見的 非對(duì)稱算法 主要有 RSA、DSA 等,散列算法 主要有 SHA-1、MD5 等。

3.1. 對(duì)稱加密

對(duì)稱加密算法 是應(yīng)用較早的加密算法,又稱為 共享密鑰加密算法。在 對(duì)稱加密算法 中,使用的密鑰只有一個(gè),發(fā)送 和 接收 雙方都使用這個(gè)密鑰對(duì)數(shù)據(jù)進(jìn)行 加密 和 解密。這就要求加密和解密方事先都必須知道加密的密鑰。

數(shù)據(jù)加密過程:在對(duì)稱加密算法中,數(shù)據(jù)發(fā)送方 將 明文 (原始數(shù)據(jù)) 和 加密密鑰 一起經(jīng)過特殊 加密處理,生成復(fù)雜的 加密密文 進(jìn)行發(fā)送。

數(shù)據(jù)解密過程:數(shù)據(jù)接收方 收到密文后,若想讀取原數(shù)據(jù),則需要使用 加密使用的密鑰 及相同算法的 逆算法 對(duì)加密的密文進(jìn)行解密,才能使其恢復(fù)成 可讀明文。

3.2. 非對(duì)稱加密

非對(duì)稱加密算法,又稱為 公開密鑰加密算法。它需要兩個(gè)密鑰,一個(gè)稱為 公開密鑰 (public key),即 公鑰,另一個(gè)稱為 私有密鑰 (private key),即 私鑰。

因?yàn)?加密 和 解密 使用的是兩個(gè)不同的密鑰,所以這種算法稱為 非對(duì)稱加密算法。

如果使用 公鑰 對(duì)數(shù)據(jù) 進(jìn)行加密,只有用對(duì)應(yīng)的 私鑰 才能 進(jìn)行解密。

如果使用 私鑰 對(duì)數(shù)據(jù) 進(jìn)行加密,只有用對(duì)應(yīng)的 公鑰 才能 進(jìn)行解密。

例子:甲方生成 一對(duì)密鑰 并將其中的一把作為 公鑰 向其它人公開,得到該公鑰的 乙方 使用該密鑰對(duì)機(jī)密信息 進(jìn)行加密 后再發(fā)送給甲方,甲方再使用自己保存的另一把 專用密鑰 (私鑰),對(duì) 加密 后的信息 進(jìn)行解密。

?

4. 常見的簽名加密算法
4.1. MD5算法

MD5 用的是 哈希函數(shù),它的典型應(yīng)用是對(duì)一段信息產(chǎn)生 信息摘要,以 防止被篡改。嚴(yán)格來說,MD5 不是一種 加密算法 而是 摘要算法。無論是多長(zhǎng)的輸入,MD5 都會(huì)輸出長(zhǎng)度為 128bits 的一個(gè)串 (通常用 16 進(jìn)制 表示為 32 個(gè)字符)。

4.2. SHA1算法

SHA1 是和 MD5 一樣流行的 消息摘要算法,然而 SHA1 比 MD5 的 安全性更強(qiáng)。對(duì)于長(zhǎng)度小于 2 ^ 64 位的消息,SHA1 會(huì)產(chǎn)生一個(gè) 160 位的 消息摘要?;?MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被應(yīng)用在檢查 文件完整性 以及 數(shù)字簽名 等場(chǎng)景。

4.3. HMAC算法

HMAC 是密鑰相關(guān)的 哈希運(yùn)算消息認(rèn)證碼(Hash-based Message Authentication Code),HMAC 運(yùn)算利用 哈希算法 (MD5、SHA1 等),以 一個(gè)密鑰 和 一個(gè)消息 為輸入,生成一個(gè) 消息摘要 作為 輸出。

HMAC 發(fā)送方 和 接收方 都有的 key 進(jìn)行計(jì)算,而沒有這把 key 的第三方,則是 無法計(jì)算 出正確的 散列值的,這樣就可以 防止數(shù)據(jù)被篡改。

4.4. AES/DES/3DES算法

AES、DES、3DES 都是 對(duì)稱 的 塊加密算法,加解密 的過程是 可逆的。常用的有 AES128、AES192、AES256 (默認(rèn)安裝的 JDK 尚不支持 AES256,需要安裝對(duì)應(yīng)的 jce 補(bǔ)丁進(jìn)行升級(jí) jce1.7,jce1.8)。
4.4.1. DES算法

DES 加密算法是一種 分組密碼,以 64 位為 分組對(duì)數(shù)據(jù) 加密,它的 密鑰長(zhǎng)度 是 56 位,加密解密 用 同一算法。

DES 加密算法是對(duì) 密鑰 進(jìn)行保密,而 公開算法,包括加密和解密算法。這樣,只有掌握了和發(fā)送方 相同密鑰 的人才能解讀由 DES加密算法加密的密文數(shù)據(jù)。因此,破譯 DES 加密算法實(shí)際上就是 搜索密鑰的編碼。對(duì)于 56 位長(zhǎng)度的 密鑰 來說,如果用 窮舉法 來進(jìn)行搜索的話,其運(yùn)算次數(shù)為 2 ^ 56 次。
4.4.2. 3DES算法

是基于 DES 的 對(duì)稱算法,對(duì) 一塊數(shù)據(jù) 用 三個(gè)不同的密鑰 進(jìn)行 三次加密,強(qiáng)度更高。
4.4.3. AES算法

AES 加密算法是密碼學(xué)中的 高級(jí)加密標(biāo)準(zhǔn),該加密算法采用 對(duì)稱分組密碼體制,密鑰長(zhǎng)度的最少支持為 128 位、 192 位、256 位,分組長(zhǎng)度 128 位,算法應(yīng)易于各種硬件和軟件實(shí)現(xiàn)。這種加密算法是美國聯(lián)邦政府采用的 區(qū)塊加密標(biāo)準(zhǔn)。

AES 本身就是為了取代 DES 的,AES 具有更好的 安全性、效率 和 靈活性。

4.5. RSA算法

RSA 加密算法是目前最有影響力的 公鑰加密算法,并且被普遍認(rèn)為是目前 最優(yōu)秀的公鑰方案 之一。RSA 是第一個(gè)能同時(shí)用于 加密 和 數(shù)字簽名 的算法,它能夠 抵抗 到目前為止已知的 所有密碼攻擊,已被 ISO 推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)。

RSA 加密算法 基于一個(gè)十分簡(jiǎn)單的數(shù)論事實(shí):將兩個(gè)大 素?cái)?shù) 相乘十分容易,但想要對(duì)其乘積進(jìn)行 因式分解 卻極其困難,因此可以將 乘積 公開作為 加密密鑰。

4.6. ECC算法

ECC 也是一種 非對(duì)稱加密算法,主要優(yōu)勢(shì)是在某些情況下,它比其他的方法使用 更小的密鑰,比如 RSA 加密算法,提供 相當(dāng)?shù)幕蚋叩燃?jí) 的安全級(jí)別。不過一個(gè)缺點(diǎn)是 加密和解密操作 的實(shí)現(xiàn)比其他機(jī)制 時(shí)間長(zhǎng) (相比 RSA 算法,該算法對(duì) CPU 消耗嚴(yán)重)。

?

5. 各種加密算法對(duì)比

5.1. 散列算法比較

?

?

5.4. 對(duì)稱算法與非對(duì)稱加密算法
5.4.1. 對(duì)稱算法

密鑰管理:比較難,不適合互聯(lián)網(wǎng),一般用于內(nèi)部系統(tǒng)

安全性:中

加密速度:快好 幾個(gè)數(shù)量級(jí) (軟件加解密速度至少快 100 倍,每秒可以加解密數(shù) M 比特 數(shù)據(jù)),適合大數(shù)據(jù)量的加解密處理

5.4.2. 非對(duì)稱算法

密鑰管理:密鑰容易管理

安全性:高

加密速度:比較慢,適合 小數(shù)據(jù)量 加解密或數(shù)據(jù)簽名

本文介紹了?數(shù)字簽名加密和解密對(duì)稱加密和非對(duì)稱加密,具體詳細(xì)的使用和代碼實(shí)例自行去網(wǎng)上查找,結(jié)合工作中實(shí)際需求更好哦!

轉(zhuǎn)載于:https://www.cnblogs.com/little-fly/p/10247257.html

總結(jié)

以上是生活随笔為你收集整理的浅谈加密算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。