最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

自動(dòng)化測(cè)試時(shí)基于Python常用的幾個(gè)加密算法總結(jié)

 更新時(shí)間:2023年12月12日 14:11:27   作者:蟲(chóng)無(wú)涯  
這幾天做自動(dòng)化測(cè)試,遇到一個(gè)問(wèn)題,那就是接口的請(qǐng)求的密碼是加密的,產(chǎn)品的要求是不能使用使用其他特殊手段,他給提供加密算法,需要在接口請(qǐng)求的時(shí)候,使用加密算法處理后的數(shù)據(jù)傳參,本文主要是整理了幾個(gè)加密算法,以便后續(xù)測(cè)試使用,需要的朋友可以參考下

0 寫(xiě)在前邊

  • 這幾天做自動(dòng)化測(cè)試,遇到一個(gè)問(wèn)題,那就是接口的請(qǐng)求的密碼是加密的;
  • 產(chǎn)品的要求是不能使用使用其他特殊手段,他給提供加密算法,需要在接口請(qǐng)求的時(shí)候,使用加密算法處理后的數(shù)據(jù)傳參;
  • 其實(shí)這樣來(lái)說(shuō)反而簡(jiǎn)單了很多,因?yàn)橐呀?jīng)知道加密算法,那就在傳參前先把密碼進(jìn)行加密處理就行了(心理默默的想,這個(gè)產(chǎn)品也太好了吧);
  • 本文主要是整理了幾個(gè)加密算法,以便后續(xù)測(cè)試使用。

1 公用數(shù)據(jù)

  • 為了方便后續(xù)舉例,我們?cè)O(shè)計(jì)一個(gè)類,來(lái)把需要演示的加密算法統(tǒng)一封裝起來(lái):
# -*- coding:utf-8 -*-
# 作者:蟲(chóng)無(wú)涯
# 日期:2023/12/1 
# 文件名稱:test_pass.py
# 作用:常用的加密算法實(shí)現(xiàn)
# 聯(lián)系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson


import hashlib

class TestPass():
    def __init__(self):
        super(TestPass, self).__init__()
        self.name = "admin"
        self.password = "123456"


if __name__ == "__main__":
    test_pass = TestPass()
  • 其中self.name模擬用戶名數(shù)據(jù),self.password模擬密碼數(shù)據(jù)。

2 MD5直接加密

  • MD5是一種常用的單向散列函數(shù),是不可逆的,也就是說(shuō)無(wú)法通過(guò)被加密后的結(jié)果來(lái)確定加密前的內(nèi)容;
  • 生成結(jié)果為固定的128位字節(jié),一般為32位的十六進(jìn)制字符串;
  • 這里會(huì)使用到hashlib,這個(gè)一般python安裝完都是有的,目錄在:
X:\Python37\Lib\hashlib.py
  • 直接加密實(shí)現(xiàn):
    def test_md5(self):
        md = hashlib.md5(self.password.encode())
        md5_pass = md.hexdigest()
        print(f"密碼{self.password}, md5直接加密后為:{md5_pass}")
  • 輸出為:

密碼123456, md5直接加密后為:e10adc3949ba59abbe56e057f20f883e

3 用戶名和密碼組合MD5加密

  • 有個(gè)真實(shí)的業(yè)務(wù)場(chǎng)景,在測(cè)試某個(gè)業(yè)務(wù)系統(tǒng)的時(shí)候,它不是簡(jiǎn)單的密碼MD5加密;
  • 而是使用用戶名和密碼組合后,先轉(zhuǎn)小寫(xiě)再md5加密;
  • 這個(gè)需求的實(shí)現(xiàn)過(guò)程為:
    def test_md5_01(self):
        data = (self.name + self.password).lower()
        md = hashlib.md5(data.encode())
        md5_pass = md.hexdigest()
        print(f"密碼{self.password},用戶名{self.name}, md5組合加密后為:{md5_pass}")
  • 輸出為:

密碼123456,用戶名admin, md5組合加密后為:a66abb5684c45962d887564f08346e8d

4 密碼使用MD5+鹽加密

  • 這個(gè)場(chǎng)景是先把密碼設(shè)置鹽;
  • 然后將鹽拼接在原密碼之后;
  • 實(shí)現(xiàn)過(guò)程為:
    def test_md5_02(self):
        s = self.password[:5]  # 設(shè)置鹽
        md = hashlib.md5((self.password + s).encode())
        md5_pass = md.hexdigest()
        print(f"密碼{self.password},md5加鹽后為:{md5_pass}")
  • 輸出為:

密碼123456,md5加鹽后為:e363373ddc24b34c5bb9d99abbfd8be5

5 MD5加鹽后將密碼整體插入鹽中

  • 這個(gè)場(chǎng)景也挺常見(jiàn)的,就是先設(shè)置鹽;
  • 然后將原密碼和鹽使用join方式處理;
  • 實(shí)現(xiàn)過(guò)程為:
    def test_md5_03(self):
        s = self.password[:6]  # 設(shè)置鹽
        md = hashlib.md5((self.password.join(s)).encode())
        md5_pass = md.hexdigest()
        print(f"密碼{self.password},md5加鹽使用json方法為:{md5_pass}")
  • 輸出為:

密碼123456,md5加鹽使用json方法為:43ec0d3f863b4f7e635e7169ddc18606

6 SHA1加密

  • 這個(gè)和MD5類似,不過(guò)它的結(jié)果是160位字節(jié),一般為40位的十六進(jìn)制字符串;
  • 它也是在hashlib中;
  • 用戶名和密碼拼接后使用SHA1加密,實(shí)現(xiàn)如下:
    def test_sha1(self):
        data = self.name + self.password
        sha1 = hashlib.sha1()
        sha1.update(data.encode("utf-8"))
        sha1_pass = sha1.hexdigest()
        print(f"密碼{self.password},用戶名{self.name}, sha1組合加密后為:{sha1_pass}")
  • 輸出為:

密碼123456,用戶名admin, sha1組合加密后為:cd5ea73cd58f827fa78eef7197b8ee606c99b2e6

7 SHA256加密

  • SHA256SHA1更安全,但是效率慢,結(jié)果也會(huì)長(zhǎng)一些;
  • 用戶名和密碼拼接后使用SHA256加密,實(shí)現(xiàn)如下:
    def test_sha256(self):
        data = self.name + self.password
        sha256 = hashlib.sha256()
        sha256.update(data.encode("utf-8"))
        sha1_pass = sha256.hexdigest()
        print(f"密碼{self.password},用戶名{self.name}, sha256組合加密后為:{sha1_pass}")
  • 輸出為:

密碼123456,用戶名admin, sha256組合加密后為:ac0e7d037817094e9e0b4441f9bae3209d67b02fa484917065f71b16109a1a78

  • 當(dāng)然還有SHA512這個(gè)就不說(shuō)了,同理可證。

8 HMAC加密

  • 其實(shí)這個(gè)我自動(dòng)化過(guò)程中用的不多,但是也是很常見(jiàn)的一個(gè)加密算法了;
  • HMAC是一種基于加密hash函數(shù)和共享密鑰的消息認(rèn)證協(xié)議;
  • 需要用到hmac庫(kù),目錄在:
X:\Python37\Lib\hmac.py
  • 有三個(gè)參數(shù),一個(gè)是密鑰,一個(gè)是待加密的字符串,一個(gè)是hash函數(shù),示例如下:
 def test_hmac(self):
        hm = hmac.new(b'029-11111111', bytes(self.password, 'utf-8'), hashlib.md5)
        hm.digest()
        hmac_pass = hm.hexdigest()
        print(f"密碼{self.password},用戶名{self.name}, hmac加密后為:{hmac_pass}")
  • 輸出為:

密碼123456,用戶名admin, hmac加密后為:4e32d965d8965df4c7f6aaaf68791e86

9 其他的算法

  • 當(dāng)然后還有幾個(gè)算法,這個(gè)不再贅述了,比如DESAES、RSA、ECC等等
  • 后續(xù)有空再補(bǔ)充吧。

10 本文源碼

# -*- coding:utf-8 -*-
# 作者:蟲(chóng)無(wú)涯
# 日期:2023/12/1 
# 文件名稱:test_pass.py
# 作用:常用的加密算法實(shí)現(xiàn)
# 聯(lián)系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson


import hashlib
import hmac

class TestPass():
    def __init__(self):
        super(TestPass, self).__init__()
        self.name = "admin"
        self.password = "123456"

    def test_md5(self):
        md = hashlib.md5(self.password.encode())
        md5_pass = md.hexdigest()
        print(f"密碼{self.password}, md5直接加密后為:{md5_pass}")

    def test_md5_01(self):
        data = (self.name + self.password).lower()
        md = hashlib.md5(data.encode())
        md5_pass = md.hexdigest()
        print(f"密碼{self.password},用戶名{self.name}, md5組合加密后為:{md5_pass}")

    def test_md5_02(self):
        s = self.password[:5]  # 設(shè)置鹽
        md = hashlib.md5((self.password + s).encode())
        md5_pass = md.hexdigest()
        print(f"密碼{self.password},md5加鹽后為:{md5_pass}")

    def test_md5_03(self):
        s = self.password[:6]  # 設(shè)置鹽
        md = hashlib.md5((self.password.join(s)).encode())
        md5_pass = md.hexdigest()
        print(f"密碼{self.password},md5加鹽使用json方法為:{md5_pass}")

    def test_sha1(self):
        data = self.name + self.password
        sha1 = hashlib.sha1()
        sha1.update(data.encode("utf-8"))
        sha1_pass = sha1.hexdigest()
        print(f"密碼{self.password},用戶名{self.name}, sha1組合加密后為:{sha1_pass}")

    def test_sha256(self):
        data = self.name + self.password
        sha256 = hashlib.sha256()
        sha256.update(data.encode("utf-8"))
        sha1_pass = sha256.hexdigest()
        print(f"密碼{self.password},用戶名{self.name}, sha256組合加密后為:{sha1_pass}")

    def test_hmac(self):
        hm = hmac.new(b'029-11111111', bytes(self.password, 'utf-8'), hashlib.md5)
        hm.digest()
        hmac_pass = hm.hexdigest()
        print(f"密碼{self.password},用戶名{self.name}, hmac加密后為:{hmac_pass}")

if __name__ == "__main__":
    test_pass = TestPass()
    # test_pass.test_md5()
    # test_pass.test_md5_01()
    # test_pass.test_md5_02()
    # test_pass.test_md5_03()
    # test_pass.test_sha1()
    # test_pass.test_sha256()
    test_pass.test_hmac()

以上就是自動(dòng)化測(cè)試時(shí)基于Python常用的幾個(gè)加密算法總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Python加密算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python爬取”頂點(diǎn)小說(shuō)網(wǎng)“《純陽(yáng)劍尊》的示例代碼

    python爬取”頂點(diǎn)小說(shuō)網(wǎng)“《純陽(yáng)劍尊》的示例代碼

    這篇文章主要介紹了python爬取”頂點(diǎn)小說(shuō)網(wǎng)“《純陽(yáng)劍尊》的示例代碼,幫助大家更好的利用python 爬蟲(chóng)爬取數(shù)據(jù),感興趣的朋友可以了解下
    2020-10-10
  • python-itchat 獲取微信群用戶信息的實(shí)例

    python-itchat 獲取微信群用戶信息的實(shí)例

    今天小編就為大家分享一篇python-itchat 獲取微信群用戶信息的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Tensorflow 多線程設(shè)置方式

    Tensorflow 多線程設(shè)置方式

    今天小編就為大家分享一篇Tensorflow 多線程設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python3實(shí)現(xiàn)定時(shí)任務(wù)的四種方式

    Python3實(shí)現(xiàn)定時(shí)任務(wù)的四種方式

    Python實(shí)現(xiàn)定點(diǎn)與定時(shí)任務(wù)方式比較多,找到下面四中實(shí)現(xiàn)方式,每個(gè)方式都有自己應(yīng)用場(chǎng)景;下面來(lái)快速介紹Python中常用的定時(shí)任務(wù)實(shí)現(xiàn)方式,一起看看吧
    2019-06-06
  • TensorFlow利用saver保存和提取參數(shù)的實(shí)例

    TensorFlow利用saver保存和提取參數(shù)的實(shí)例

    今天小編就為大家分享一篇TensorFlow利用saver保存和提取參數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • 一篇文章帶你了解python標(biāo)準(zhǔn)庫(kù)--sys模塊

    一篇文章帶你了解python標(biāo)準(zhǔn)庫(kù)--sys模塊

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)之Sys模塊使用詳解,本文講解了使用sys模塊獲得腳本的參數(shù)、處理模塊、使用sys模塊操作模塊搜索路徑、使用sys模塊查找內(nèi)建模塊、使用sys模塊查找已導(dǎo)入的模塊等使用案例,需要的朋友可以參考下
    2021-08-08
  • Python小工具之消耗系統(tǒng)指定大小內(nèi)存的方法

    Python小工具之消耗系統(tǒng)指定大小內(nèi)存的方法

    今天小編就為大家分享一篇Python小工具之消耗系統(tǒng)指定大小內(nèi)存的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python Flask框架使用介紹

    Python Flask框架使用介紹

    今天來(lái)給大家說(shuō)一個(gè)Python的輕量級(jí)web開(kāi)發(fā)框架——Flask,為什么要推薦它呢?當(dāng)然是因?yàn)樗鼔蜉p量級(jí)了,開(kāi)發(fā)迅速是它的特點(diǎn),當(dāng)然它也有缺點(diǎn),不過(guò)這里不說(shuō),因?yàn)榧扔盟终f(shuō)它差感覺(jué)不好
    2022-08-08
  • python實(shí)現(xiàn)程序重啟和系統(tǒng)重啟方式

    python實(shí)現(xiàn)程序重啟和系統(tǒng)重啟方式

    這篇文章主要介紹了python實(shí)現(xiàn)程序重啟和系統(tǒng)重啟方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python連接和操作Elasticsearch的流程步驟

    Python連接和操作Elasticsearch的流程步驟

    本文將詳細(xì)介紹如何使用?Python?連接和操作?Elasticsearch,包括安裝客戶端、基本的操作(如創(chuàng)建索引、添加數(shù)據(jù)、查詢數(shù)據(jù)等)以及高級(jí)應(yīng)用(如聚合查詢、索引映射等),需要的朋友可以參考下
    2025-04-04

最新評(píng)論

门头沟区| 徐汇区| 微博| 界首市| 岳西县| 武宣县| 玉门市| 禹州市| 夹江县| 临潭县| 宜宾市| 陈巴尔虎旗| 洪洞县| 民丰县| 博罗县| 永城市| 临朐县| 云梦县| 丹江口市| 盐山县| 休宁县| 日照市| 拜泉县| 满洲里市| 从江县| 修文县| 河北省| 武汉市| 蓬溪县| 武邑县| 秀山| 广元市| 锡林郭勒盟| 永胜县| 吴川市| 柳州市| 嘉黎县| 新巴尔虎右旗| 九龙城区| 罗定市| 巴楚县|