亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

盤點(diǎn)Python爬蟲(chóng)中的常見(jiàn)加密算法

89542767 / 625人閱讀

  現(xiàn)如今,各行各業(yè)都會(huì)用到各種各樣的算法,包括我們?cè)谑褂肞ython的時(shí)候,也會(huì)使用到各種各樣的算法,比如,我們會(huì)使用到各種的加密算法,那么,到底什么才是加密算法呢?下面就給大家詳細(xì)解答下。


  序言


  下面小編就和大家一起來(lái)盤點(diǎn)下數(shù)據(jù)收集環(huán)節(jié)中這一些熱門的密碼算法,這些有什么特點(diǎn)、數(shù)據(jù)加密的形式有哪些方面這些,了解了這一些以后其實(shí)對(duì)于我們反向破譯這一些數(shù)據(jù)加密的主要參數(shù)可以起到很多的協(xié)助!


  相信大家數(shù)據(jù)收集的過(guò)程中,會(huì)遇到許多數(shù)據(jù)加密的主要參數(shù),比如說(shuō)好像"token"、"sign"這些,下面小編就和大家一起來(lái)盤點(diǎn)下數(shù)據(jù)收集環(huán)節(jié)中這一些熱門的密碼算法,這些有什么特點(diǎn)、數(shù)據(jù)加密的形式有哪些方面這些,了解了這一些以后其實(shí)對(duì)于我們反向破譯這一些數(shù)據(jù)加密的主要參數(shù)可以起到很多的協(xié)助!


  1.基礎(chǔ)常識(shí)


  首先我們需要明白的是,什么是加密和解密?顧名思義


  加密(Encryption):將明文數(shù)據(jù)變換為密文的過(guò)程


  解密(Decryption):加密的逆過(guò)程,即由密文恢復(fù)出原明文的過(guò)程。


  加密和解密算法的操作通常都是在一組密鑰的控制下進(jìn)行的,分別成為是加密密鑰(Encryption Key)和解密密鑰(Decryption Key),


  如下圖所示:

01.png

  而加密算法當(dāng)中又分為是對(duì)稱加密和非對(duì)稱加密以及散列算法,其中


  對(duì)稱加密:即加密與解密時(shí)使用的是相同的密鑰,例如RC4、AES、DES等加密算法


  非對(duì)稱加密:即加密與解密時(shí)使用不相同的密鑰,例如RSA加密算法等


  散列算法:又稱為是哈希函數(shù)。對(duì)不同長(zhǎng)度的輸入消息產(chǎn)生固定的輸出,該輸出值就是散列值


  2.Base64偽加密


  Base64嚴(yán)格意義上來(lái)說(shuō)不算做事加密的算法,只是一種編碼的方式,它是一種用64個(gè)字符,分別是A-Z、a-z、0-9、+、/這64個(gè)字符,實(shí)現(xiàn)對(duì)數(shù)據(jù)的編碼,可用于在HTTP環(huán)境下傳遞較長(zhǎng)的標(biāo)識(shí)信息。采用Base64編碼具有不可讀性,需要解碼后才能閱讀。我們使用Python來(lái)對(duì)任意網(wǎng)址進(jìn)行Base64的編碼操作,代碼如下:


  import base64
  #想將字符串轉(zhuǎn)編碼成base64,要先將字符串轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)
  url="www.baidu.com"
  bytes_url=url.encode("utf-8")
  str_url=base64.b64encode(bytes_url)#被編碼的參數(shù)必須是二進(jìn)制數(shù)據(jù)
  print(str_url)


  輸出:


  b'd3d3LmJhaWR1LmNvbQ=='


  那么同樣地,我們也可以對(duì)其進(jìn)行解碼的操作,代碼如下:


  url="d3d3LmJhaWR1LmNvbQ=="
  str_url=base64.b64decode(url).decode("utf-8")
  print(str_url)


  輸出:


  www.baidu.com


  3.MD5加密


  MD5是一種被廣泛使用的線性散列算法,且加密之后產(chǎn)生的是一個(gè)固定長(zhǎng)度(32位或者是16位)的數(shù)據(jù),由字母和數(shù)字組成,大小寫統(tǒng)一。其最后加密生成的數(shù)據(jù)是不可逆的,也就是說(shuō)不能夠輕易地通過(guò)加密后的數(shù)據(jù)還原到原始的字符串,除非是通過(guò)暴力破解的方式。


  我們?cè)赑ython當(dāng)中來(lái)實(shí)現(xiàn)一下MD5加密:


  import hashlib
  str='this is a md5 demo.'
  hl=hashlib.md5()
  hl.update(str.encode(encoding='utf-8'))
  print('MD5加密前為:'+str)
  print('MD5加密后為:'+hl.hexdigest())


  輸出:


  MD5加密前為:this is a md5 demo.


  MD5加密后為:b2caf2a298a9254b38a2e33b75cfbe75


  就像上文提到的,針對(duì)MD5加密可以通過(guò)暴力破解的方式來(lái)降低其安全性,因此在實(shí)操過(guò)程當(dāng)中,我們會(huì)添加鹽值(Salt)或者是雙重MD5加密等方式來(lái)增加其可靠性,代碼如下:


  #post傳入的參數(shù)
  params="123456"
  #加密后需拼接的鹽值(Salt)
  salt="asdfkjalksdncxvm"
  def md5_encrypt():
  m=md5()
  m.update(params.encode('utf8'))
  sign1=m.hexdigest()
  return sign1
  def md5_encrypt_with_salt():
  m=md5()
  m.update((md5_encrypt()+salt).encode('utf8'))
  sign2=m.hexdigest()
  return sign2

  4.AES/DES對(duì)稱加密


  首先我們來(lái)講DES加密,全稱是Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),在對(duì)稱性加密當(dāng)中比較常見(jiàn)的一種,也就是加密和解密過(guò)程當(dāng)中使用的密鑰是相同的,因此想要破解的話,通過(guò)暴力枚舉的方式,只要計(jì)算的能力足夠強(qiáng)還是可以被破解的。


  AES的全稱是Advanced Encryption Standard,是DES算法的替代者,也是當(dāng)今最流行的對(duì)稱加密算法之一。想要弄清楚AES算法,首先就得弄明白三個(gè)基本的概念:密鑰、填充和模式。


  密鑰


  密鑰我們之前已經(jīng)說(shuō)了很多了,大家可以將其想象成是一把鑰匙,既可以用其來(lái)進(jìn)行上鎖,可以用其來(lái)進(jìn)行解鎖。AES支持三種長(zhǎng)度的密鑰:128位、192位以及256位。


  填充


  而至于填充這一概念,AES的分組加密的特性我們需要了解,具體如下圖所示:


  簡(jiǎn)單來(lái)說(shuō),AES算法在對(duì)明文加密的時(shí)候,并不是把整個(gè)明文一股腦兒地加密成一整段密文,而是把明文拆分成一個(gè)個(gè)獨(dú)立的明文塊,每一個(gè)明文塊的長(zhǎng)度為128比特。


  這些明文塊經(jīng)過(guò)AES加密器的復(fù)雜處理之后,生成一個(gè)個(gè)獨(dú)立的密文塊,將這些密文塊拼接到一起就是最終的AES加密的結(jié)果了。


  那么這里就有一個(gè)問(wèn)題了,要是有一段明文的長(zhǎng)度是196比特,如果按照每128比特一個(gè)明文塊來(lái)拆分的話,第二個(gè)明文塊只有64比特了,不足128比特該怎么辦呢?這個(gè)時(shí)候就輪到填充來(lái)發(fā)揮作用了,默認(rèn)的填充方式是PKCS5Padding以及ISO10126Padding。


  不過(guò)在AES加密的時(shí)候使用了某一種填充方式,解密的時(shí)候也必須采用同樣的填充方式。

02.png

  模式


  AES的工作模式,體現(xiàn)在了把明文塊加密成密文塊的處理過(guò)程中,主要有五種不同的工作模式,分別是CBC、ECB、CTR、CFB以及OFB模式,同樣地,如果在AES加密過(guò)程當(dāng)中使用了某一種工作模式,解密的時(shí)候也必須采用同樣地工作模式。最后我們用Python來(lái)實(shí)現(xiàn)一下AES加密。


  import base64
  from Crypto.Cipher import AES
  def AES_encrypt(text,key):
  pad=16-len(text)%16
  text=text+pad*chr(pad)
  text=text.encode("utf-8")
  encryptor=AES.new(key.encode('utf-8'),AES.MODE_ECB)
  encrypt_text=encryptor.encrypt(text)
  encrypt_text=base64.b64encode(encrypt_text)
  return encrypt_text.decode('utf-8')


  綜上所述,這篇內(nèi)容就給大家介紹到這里了,希望可以給大家?guī)?lái)幫助。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/128437.html

相關(guān)文章

  • 首次公開(kāi),整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • #yyds干貨盤點(diǎn)# Python - 第一個(gè)爬蟲(chóng)

    摘要:常見(jiàn)狀態(tài)碼號(hào)碼含義表示服務(wù)器成功接收部分請(qǐng)求,要求客戶端繼續(xù)提交其余請(qǐng)求才能完成整個(gè)處理過(guò)程表示服務(wù)器成功接收請(qǐng)求并已完成整個(gè)處理過(guò)程。 創(chuàng)建時(shí)間:2021-11-24作者:在下小黃一、小試牛刀:1.1 怎樣扒網(wǎng)頁(yè)呢?其實(shí)就是根據(jù)URL來(lái)獲取它的網(wǎng)頁(yè)信息,雖然我們?cè)跒g覽器中看到的是一幅幅優(yōu)美的畫面,但是其實(shí)是由...

    王笑朝 評(píng)論0 收藏0
  • Python 從零開(kāi)始爬蟲(chóng)(九)——模擬登錄,cookie的使用

    摘要:所以只要得到登錄后的并必要時(shí)進(jìn)行更新,服務(wù)器就會(huì)認(rèn)定其為登錄狀態(tài)??纯慈思抑酰用艿竭B名字都沒(méi)有了,還混淆,如何下手綜上,適用于沒(méi)有加密的登錄或者加密算法比較簡(jiǎn)單并且不常更新的網(wǎng)站。遇上無(wú)解的加密算法要么手操拷貝,要么請(qǐng)大佬出場(chǎng)。 某些網(wǎng)站,登錄和沒(méi)登錄,用戶的權(quán)限是不一樣的,帳號(hào)登錄之后才能獲取更多的信息。更有甚者一上來(lái)就是登錄界面,不登錄就不給你進(jìn)去(如p站)。爬取目標(biāo)不用登錄固...

    edgardeng 評(píng)論0 收藏0
  • 超詳細(xì)的Python實(shí)現(xiàn)百度云盤模擬登陸(模擬登陸進(jìn)階)

    摘要:方法不僅適用于百度云,別的一些比較難以模擬登陸的網(wǎng)站都可以按照這種方式分析。本文要求讀者具有模擬登陸主要是抓包和閱讀代碼和密碼學(xué)的基本知識(shí)。和模擬登陸微博的分析流程一樣,我們首先要做的是以正常人的流程完整的登錄一遍百度網(wǎng)盤。 這是第二篇從簡(jiǎn)書搬運(yùn)過(guò)來(lái)的文章(大家別誤會(huì),是我原創(chuàng)的)。因?yàn)榍耙黄恼?,我看反響還挺好的,所以把這篇也搬運(yùn)過(guò)來(lái)了,其實(shí)目的還是為宣傳自己的分布式微博爬蟲(chóng)(該項(xiàng)目...

    CarterLi 評(píng)論0 收藏0
  • #yyds干貨盤點(diǎn)# 前端基礎(chǔ)知識(shí)面試集錦1

    摘要:作用標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別聲明位于位于文檔中的第一行,處于標(biāo)簽之前。又稱內(nèi)核及以上版本,等內(nèi)核及以上。存儲(chǔ)大小數(shù)據(jù)大小不能超過(guò)??梢苑乐箰阂馑⑵闭搲嗨行Х乐箤?duì)某一個(gè)特定注冊(cè)用戶用特定程序暴力方式進(jìn)行不斷的登陸嘗試。 HTMLDoctype作用?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別?(1)、聲明位于位于HT...

    番茄西紅柿 評(píng)論0 收藏2637

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<