最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

測(cè)試萌新也能懂:常用加密算法解析

2020-08-18 14:09 作者:軟件測(cè)試檸檬班Pro  | 我要投稿

檸檬精開始更新啦~

我又肥來啦,今天同樣又是暴曬的一天...

可是我沒有放棄給大家繼續(xù)分享內(nèi)容:

常用加密算法

在測(cè)試過程中,我們經(jīng)常會(huì)遇到接口數(shù)據(jù)加密、數(shù)據(jù)庫密碼加密怎么測(cè)試等問題,很多同學(xué)立馬被嚇退了。

實(shí)際上,只要耐心一點(diǎn),測(cè)試過程的常用加密算法不是那么難,甚至有的根本就不是加密算法。

密碼學(xué)是一門相對(duì)比較晦澀的科學(xué),電影《模仿游戲》就是講的包括圖靈在內(nèi)的幾個(gè)頂級(jí)數(shù)學(xué)家破譯德軍的軍事情報(bào)的故事。但是在工作當(dāng)中,我們不需要懂密碼學(xué)的底層原理,你只需要知道他們?nèi)绾问褂玫木涂梢粤恕?/p>

本文會(huì)列舉在測(cè)試和開發(fā)過程中最常用的算法,解開所謂“加密”過程的神秘面紗。



算法1:base64


這不是加密算法,它叫做編碼算法。和我們把文字編碼成計(jì)算機(jī)當(dāng)中的二進(jìn)制數(shù)據(jù)一樣。

說得更通俗一點(diǎn)。只要你觀察到 I am a programer 這幾個(gè)字是英語,你就能通過翻譯軟件知道他的原始意思是 “我是一個(gè)程序猿”。

我們來看一段字符串:

SSBsaWtlIHlvdQ==

如果你是一個(gè)萌新,你肯定不懂這是什么意思??次倪@篇文章以后,你就會(huì)知道他的意思是:

I like you

就和我們把中文翻譯成英文一樣, base64 這樣的編碼算法只是把你看得懂的字翻譯成肉眼看不懂的字,但是一旦你知道這些看不懂的符號(hào)是哪一門語言,你就可以直接翻譯回去。

比如上一段?SSBsaWtlIHlvdQ==?就是用?base64?編碼?I like you得到的字。

要“破解”也非常簡單,你只要在網(wǎng)上搜索?base64?在線編碼、解碼就有工具。如果要使用代碼,類似于這樣:

import base64
# 開發(fā)人員編碼
byte_str="I like you".encode('utf-8')encode_str=base64.b64encode(byte_str)print(encode_str)? #得到 SSBsaWtlIHlvdQ==
#解碼
decode_str=base64.b64decode("SSBsaWtlIHlvdQ==")print(decode_str.decode("utf-8"))
?# 得到 "I like you"

算法2:urlencode


URL 編碼, 和?base64?一樣,只是編碼算法,不能稱為加密。記住,編碼方式,只要你通過觀察看到的字符串的特征,分析出編碼方式,是可以很輕易的解碼的。

肉眼看不見具體意思,所以這也是防君子,不妨小人的所謂 “加密方式”。

比如:base64 的特征是尾部經(jīng)常帶有?=?號(hào),url?編碼的特征是?%?很多。我們經(jīng)常在瀏覽器中看到這樣的地址:

http://example.com/?q=%E8%8F%9C%E9%B8%9F

后半段帶有很多百分號(hào)的就是 url 編碼,你同樣可以通過搜索對(duì)應(yīng)的工具直接解碼,得到原始數(shù)據(jù):

http://example.com/?q=菜鳥

對(duì)應(yīng)的 python 代碼是這樣的:

from urllib.parse import quote, unquoteq =?'菜鳥'

#url編碼,得到

http://example.com/?q=%E8%8F%9C%E9%B8%9Furl=

'http://www.baidu.com/?text={}'.format(quote(q))

# 解碼

b = unquote('%E8%8F%9C%E9%B8%9F') # 得到:菜鳥


算法3:md5

md5 不是編碼也不是加密,它叫做摘要算法,又稱哈希算法和散列算法。他的主要作用是:

1.防止篡改

2.校驗(yàn)數(shù)據(jù)

比如你下載了一個(gè)軟件,會(huì)擔(dān)心這個(gè)軟件被人修改,植入了病毒。軟件開發(fā)者為了防止自己的軟件被別人修改,會(huì)在官網(wǎng)附帶一個(gè)摘要信息。

比如:https://dl.snipaste.com/sha-1.txt 這個(gè)網(wǎng)址就是該軟件每個(gè)版本的摘要信息。

當(dāng)你下載好軟件以后,利用摘要算法檢測(cè)工具檢測(cè)改軟件,算出他的摘要信息,如果和官方提供的一致,說明軟件沒有被修改;如果不一致,就說明這個(gè)軟件被篡改了。

摘要算法的另一個(gè)應(yīng)用場(chǎng)景是用來保存密碼。我們?nèi)粘W?cè)賬號(hào)輸入的密碼通常不會(huì)直接保存在數(shù)據(jù)庫,而是經(jīng)過摘要(或者是加密)處理以后保存在數(shù)據(jù)庫當(dāng)中。你可以通過在線工具對(duì)任意數(shù)據(jù)進(jìn)行 md5 “加密”,這里提供python?版代碼:

import?hashlib??

hash?= hashlib.md5()

#明文密碼是 hello yuz

hash.update(b"hello yuz")

hash_str =?hash.hexdigest()

# 得到數(shù)據(jù)

:bfb3f4712d0b04e8348a3fb5fa0b9bc2

# 保存到數(shù)據(jù)庫

注意:摘要算法是不可逆的,

通過 bfb3f4712d0b04e8348a3fb5fa0b9bc2 得不到原始數(shù)據(jù) hello yuz 。

所以通過存在數(shù)據(jù)庫里面的密碼無法獲知你真正的密碼。


算法 4:SHA1

SHA1?和?md5?一樣,也是摘要算法,還有?SHA256, SHA512。我們看到的區(qū)別就是長度不一樣。長度越長,理論上更加安全,同時(shí)也意味著速度更慢。

以下是?sha1?的代碼,和?md5?幾乎一樣:

s=hashlib.sha1()

s.update(b"hello yuz")

sha_str?=?s.hexdigest()

5.為什么密碼會(huì)被盜?

密碼被盜通常是因?yàn)楹诳屠昧苏惴ǖ牧硪粋€(gè)特性攻擊了數(shù)據(jù)庫,這種方式叫撞庫。

對(duì)于單一的摘要算法,有一個(gè)特征:只要你的原始數(shù)據(jù)是固定的,得到的?hash值也會(huì)一樣。

比如:通過 hello yuz

獲得 “bfb3f4712d0b04e8348a3fb5fa0b9bc2?” 黑客就是利用這種對(duì)應(yīng)關(guān)系,將很多人常用的密碼和對(duì)應(yīng)的?hash?值做成一個(gè)關(guān)系表(彩虹表),然后一一去嘗試。

比如很多人喜歡把密碼生成? 8888,?abc123。黑客只需要將這些密碼提前算出對(duì)應(yīng)的?hash?值保存起來,就可以嘗試攻破你的賬號(hào)。


6.加鹽是什么?

上面的例子提到,黑客可以利用彩虹表套取你的密碼,所以純粹的摘要算法不是一種特別安全的方式去存儲(chǔ)密碼。但是我們可以采取“加鹽”?的方式提高安全性。

網(wǎng)站開發(fā)者會(huì)提供一個(gè)類似于秘鑰的東西,我們稱為?salt,?其實(shí)就是一個(gè)隨便起的字符串。然后將原始密碼?+ salt?得到一個(gè)新字符串,再對(duì)他進(jìn)行?hash。

只要?salt?不被黑客知道,就沒有辦法利用彩虹表來攻擊數(shù)據(jù)庫。以下是加鹽版的?python?代碼:

salt?=?'the salt'

pwd?=?'8888'

salt_pwd?=?pwd?+?salt

hash?=?hashlib.md5()

hash.update(salt_pwd.encode('utf8')

hash_str?=?hash.hexdigest()

在測(cè)試過程中,如果公司的密碼是通過摘要算法生成的,可以找開發(fā)小哥哥要鹽,?然后通過對(duì)應(yīng)的摘要算法驗(yàn)證數(shù)據(jù)庫密碼。


7.總結(jié)

  • 本文我們提到的“加密”算法,都是偽加密,只有鹽(salt)和密碼類似;

  • 真正的加密算法也有很多,下節(jié)再詳細(xì)補(bǔ)充。

  • base64 編碼常用于在 URL、Cookie、網(wǎng)頁中傳輸少量二進(jìn)制數(shù)據(jù);

  • ? 優(yōu)點(diǎn):速度快,肉眼不可理解

  • ? 缺點(diǎn):編碼比較長非常容易被破解,僅適用于加密非敏感信息

  • url 編碼常用于 URL 數(shù)據(jù)的編碼和解析;

  • md5 是最經(jīng)典,使用最廣泛的摘要算法;

  • ? 部分公司會(huì)采用 md5 進(jìn)行密碼的保存

  • ? 還有公司會(huì)用其他更適合對(duì)密碼進(jìn)行摘要的算法,具體找開發(fā)

  • sha1, sha256, sha512 比 md5 安全性更高,但是速度更慢,同時(shí)存儲(chǔ)數(shù)據(jù)的時(shí)候耗費(fèi)的資源會(huì)更多。

有些事情本身我們無法控制,只好控制自己

各位小伙伴可以加我們

QQ粉絲互動(dòng)群:717291556(小伙伴進(jìn)群的時(shí)候記得備注:官網(wǎng)昂~)

每天都會(huì)分享最新教學(xué)視頻,還有“簡歷模版、各種學(xué)習(xí)資料以及工具分享給大家

我們致力讓大家一起成為別人嘴里的檸檬精~

來源:網(wǎng)上


END

測(cè)試萌新也能懂:常用加密算法解析的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
定日县| 和田市| 政和县| 平定县| 静乐县| 美姑县| 五指山市| 辽阳县| 田阳县| 江津市| 阿拉善右旗| 水城县| 大连市| 南通市| 邓州市| 通海县| 黄浦区| 独山县| 新民市| 新昌县| 信阳市| 房产| 吴川市| 乌兰县| 江油市| 南安市| 阳泉市| 深圳市| 乌拉特后旗| 舞钢市| 如东县| 大渡口区| 贵定县| 营山县| 太保市| 凤庆县| 蓬莱市| 秦安县| 广元市| 桦甸市| 鄂州市|