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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

常用安全算法

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

? ? 安全傳輸除了可以使用https,還可通過安全算法實(shí)現(xiàn)。常用的安全算法主要包括數(shù)字摘要、對(duì)稱加密算法、非對(duì)稱加密算法、信息編碼等。? ? ?

? ??本文介紹常用的安全算法主要包括摘要算法、對(duì)稱加密算法、非對(duì)稱加密算法、信息編碼、數(shù)字簽名、數(shù)字證書等,介紹各自算法的使用場(chǎng)景和使用方法。

數(shù)字摘要

實(shí)現(xiàn)

將任意長(zhǎng)度的明文通過單向hash函數(shù)摘要成固定長(zhǎng)度的串。 Hash(明文)-->固定長(zhǎng)度的摘要

特點(diǎn)

無論明文多長(zhǎng),計(jì)算出來的摘要長(zhǎng)度總是固定的。hash(‘a(chǎn)’)和hash(‘a(chǎn)aaaaaaaaaa’)形成的摘要長(zhǎng)度是一樣的

一般明文不同,計(jì)算出來的摘要也不同。也就是相同的明文,計(jì)算出來的摘要是一樣的,不同的明文形成的摘要一般是不一樣(好的hash函數(shù)不會(huì)發(fā)生碰撞)

只能進(jìn)行正向的消息摘要。也就是說從消息摘要中不能恢復(fù)成原來的明文。

數(shù)字摘要算法

md5

sha

md5

將待加密串進(jìn)行md5計(jì)算形成128比特位(32位16進(jìn)制)的摘要。

字符串:jiajun

md5摘要:a51c0678c060ae4c4630d930fe83102c

SHA-1

將待加密串進(jìn)行SHA計(jì)算后形成160比特位(40位16進(jìn)制)的摘要。

對(duì)比md5,摘要信息更長(zhǎng),運(yùn)算過程更復(fù)雜,速度更慢,但相對(duì)也更加安全。

字符串:jiajun

SHA-1摘要:26352d75496932fd05e65724610ce1aaadf9259c

彩虹表破解hash算法

上面提到的兩種數(shù)字摘要算法md5和sha-1都是不可逆算法,那么如何破解呢?彩虹表是一種破解的方式。

明文? ? hash算法? ? 密文

xxx? ? md5? ? xxx

xxx? ? sha-1? ? xxx

彩虹表破解法通過這樣的一張表進(jìn)行查詢,比如攻擊者拿到了一個(gè)用戶密碼密文,是通過md5算法加密的,那么他可以在這樣的一張表進(jìn)行查詢,從而查到密碼的明文。

彩虹表是不斷的積累的過程,表的內(nèi)容不斷豐富,從而破解的機(jī)率慢慢提高。

如果用戶的密碼是常見的密碼,比如說生日,攻擊者知道有些用戶會(huì)用生日作為密碼,那么攻擊者可以提前將這些生日組合進(jìn)行計(jì)算,提前記錄在表里面。那么在彩虹表查詢很快可以查詢的到密碼明文。而如果密碼較為復(fù)雜,如果泄露了密文,根據(jù)生成的密文在彩虹表進(jìn)行查詢,是很難查到的(因?yàn)楸砝锩娌]有)。這也就是為什么我們?yōu)?span style="margin:0px;padding:0px;max-width:100%;">用加鹽的方法降低破解率的原因了。

信息編碼

base64編碼

base64不是一種加密算法而是一種編碼算法

將二進(jìn)制數(shù)據(jù)編碼成ascll碼。比如說我們將圖片以json的形式上傳到服務(wù)器,那么可以將圖片二進(jìn)制數(shù)據(jù)通過base64編碼轉(zhuǎn)化為二進(jìn)制(html img可以直接展示base64編碼圖片)。

base64是可逆的,通過解碼算法可以恢復(fù)成二進(jìn)制數(shù)據(jù),所以根本不能加密。

16進(jìn)制編碼

將字符串內(nèi)容轉(zhuǎn)化為16進(jìn)制數(shù)據(jù)編碼

對(duì)稱加密

實(shí)現(xiàn)

發(fā)送方和接收方約定一個(gè)密鑰,生成加密密文發(fā)送。接收方接受后,使用相同的密鑰和加密算法的逆算法進(jìn)行解密。通俗將,我給小花寫一封情書,然后放在一個(gè)上鎖的小箱子,經(jīng)過多人的,最后到達(dá)小花,小花通過相同的鑰匙打開箱子。但是如果鑰匙中途被人撿到,那么情書就公開了。所謂對(duì)稱指的是加密解密用同一個(gè)加密密鑰。

特點(diǎn)

算法是公開的,加密速度快。

一旦泄露密鑰,因?yàn)樗惴ㄊ枪_的,所以可以輕松解密。

應(yīng)用分析

A向B發(fā)送秘密文件,這個(gè)時(shí)候可以采用對(duì)稱加密算法,沒有密鑰者不能解密文件。

如果密鑰泄露那么文件可以被解密,而且隨著技術(shù)的發(fā)展,如果采用窮舉暴力解密也是有可能。

如果A向很多人發(fā)送秘密文件,那么需要多次約定。


對(duì)稱加密算法

DES算法,密鑰64位

DES算法屬于對(duì)稱加密算法,明文按64位進(jìn)行分組,密鑰長(zhǎng)64位,但事實(shí)上只有56位參與DES?
運(yùn)算(第8、 16、 24、 32、 40、 48、 56、 64位是校驗(yàn)位,使得每個(gè)密鑰都有奇數(shù)個(gè)1),分組后的明文和56位的密鑰按位替代或交換的方法形成密文。由于計(jì)算機(jī)運(yùn)算能力的增強(qiáng),原版DES密碼的密鑰長(zhǎng)度變得容易被暴力破解,因此演變出了3DES算法。 3DES是DES向AES過渡的加密算法,它使用3條56位的密鑰對(duì)數(shù)據(jù)進(jìn)行三次加密,是DES的一個(gè)更安全的變形

AES算法,,密鑰長(zhǎng)度之處128,192,256三種,加密強(qiáng)度更高。


非對(duì)稱加密


實(shí)現(xiàn)

A向B發(fā)送消息,B先產(chǎn)生一個(gè)公鑰和私鑰,然后將公鑰公開,A獲得公鑰。

然后用公鑰進(jìn)行加密,然后將密文發(fā)送給B。

B得到后用私鑰進(jìn)行解密。

特點(diǎn)

非對(duì)稱加密更加復(fù)雜,所以加密解密速度沒有對(duì)稱加密快,但是也更加安全。

非對(duì)稱加密算法

RSA算法

應(yīng)用分析

即使中途有人截獲文件,因?yàn)闆]有私鑰,并且加密算法復(fù)雜,解密是很困難的。

如果A向多人發(fā)送秘密文件,那么他不需要多次約定的過程,從公鑰庫(kù)根據(jù)接收方的公鑰分別進(jìn)行加密就行。

數(shù)字簽名

是對(duì)非對(duì)稱加密算法和數(shù)字摘要算法的綜合運(yùn)用。

實(shí)現(xiàn)

A給B發(fā)送信息,A生成公鑰和私鑰,將公鑰公開。

A對(duì)發(fā)送消息進(jìn)行數(shù)字摘要算法,然后再通過私鑰進(jìn)行加密。

A將加密后的密文和原文發(fā)送給B

B收到后,對(duì)密文用公鑰進(jìn)行解密,獲得串C,再用原文進(jìn)行摘要算法,獲得串D,然后對(duì)比C D。這樣就能確認(rèn)A的身份。

數(shù)字簽名:將明文進(jìn)行摘要,然后再通過私鑰進(jìn)行加密的結(jié)果

數(shù)字簽名算法

MD5withRSA算法

SHA1withRSA算法

應(yīng)用分析

B收到A的文件,B想確認(rèn)是A發(fā)送的,那么可以根據(jù)數(shù)字簽名方式,根據(jù)A的公鑰進(jìn)行解密然后比較,因?yàn)锳的私鑰是不公開的,這樣匹配成功就能確認(rèn)是A發(fā)送的。

數(shù)字證書

網(wǎng)絡(luò)用戶的數(shù)字證書由數(shù)字證書認(rèn)證機(jī)構(gòu)(CA)進(jìn)行頒發(fā)。

實(shí)現(xiàn)

A給B發(fā)送消息,A生成公鑰和私鑰。

A將公鑰,還有公鑰持有者,簽名算法,過期時(shí)間等信息發(fā)送給CA(數(shù)字證書認(rèn)證機(jī)構(gòu))

CA認(rèn)可信息之后,通過CA的私鑰進(jìn)行簽名,這時(shí)候數(shù)字證書就產(chǎn)生了。

接著A將明文,明文數(shù)字簽名,和數(shù)字證書一起發(fā)送給B

B接受到后,通過CA的公鑰進(jìn)行解密,進(jìn)行第一次校驗(yàn),校驗(yàn)數(shù)字證書。

驗(yàn)證成功后,進(jìn)行第二次檢驗(yàn),提取數(shù)字證書中的公鑰,對(duì)密文進(jìn)行解密。

應(yīng)用分析

在數(shù)字簽名的基礎(chǔ)上,再發(fā)送一個(gè)數(shù)字證書,這樣的話接收方不需要維護(hù)一個(gè)公鑰庫(kù),通過CA驗(yàn)證后在數(shù)字證書提取,獲得公鑰。

證書管理

keytool,openssl是常用的證書管理工具。


本文來自公眾號(hào)


聚焦程序猿的世界,探討技藝,分享資源,侃談生活……



總結(jié)

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

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