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

Python常見的幾種數(shù)據(jù)加密方式

 更新時間:2022年06月06日 11:19:52   作者:就在日落之前  
這篇文章主要分享的是Python常見的幾種數(shù)據(jù)加密方式,主要包括線性散列算法(簽名算法)MD5,sha1、對稱性加密算法?AES?DES、非對稱性加密算法?RSA,具體詳細(xì)內(nèi)容介紹,需要的小伙伴可以參考一下

前言:

常見的加密算法基本分為這幾類:

  • 線性散列算法(簽名算法)MD5,sha1
  • 對稱性加密算法 AES DES
  • 非對稱性加密算法 RSA

一、md5加密

MD5是一種被廣泛使用的線性散列算法,可以產(chǎn)生出一個128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整的一致性。且MD5加密之后產(chǎn)生的是一個固定長度(32位或16位)的數(shù)據(jù)。

解密

常規(guī)講MD5是不存在解密的。但是理論上MD5是可以進(jìn)行反向暴力破解的。暴力破解的大致原理就是用很多不同的數(shù)據(jù)進(jìn)行加密后跟已有的加密數(shù)據(jù)進(jìn)行對比,由此來尋找規(guī)律。理論上只要數(shù)據(jù)量足夠龐大MD5是可以被破解的。但是要注意,破解MD5是需要考慮破解的成本(時間和機(jī)器性能)。假設(shè)破解當(dāng)前的MD5密碼需要目前計(jì)算能力最優(yōu)秀的計(jì)算機(jī)工作100年才能破解完成。那么當(dāng)前的MD5密碼就是安全的。

增加破解成本的方法

使用一段無意義且隨機(jī)的私匙進(jìn)行MD5加密會生成一個加密串,我們暫且稱之為串1
將要加密的的數(shù)據(jù)跟串1拼接,再進(jìn)行一次MD5,這時會生成串2
將串2再次進(jìn)行MD5加密,這時生成的串3就是我們加密后的數(shù)據(jù)。

我們在注冊賬號時的密碼一般都是用的MD5加密:

import hashlibh = hashlib.md5()
str = 'boboadmin'
h.update(str.encode())
msg = h.hexdigest()
print(msg)

SHA1安全哈希算法

SHA1比MD5的安全性更強(qiáng),但也比MD5慢

import hashlib
sha1 = hashlib.sha1()
data = '2333333'
sha1.update(data.encode('utf-8'))
sha1_data = sha1.hexdigest()
print(sha1_data)

二、Base64偽加密

Base64是一種用64個字符來表示任意二進(jìn)制數(shù)據(jù)的方法。base64是一種編碼方式而不是加密算法。只是看上去像是加密而已。
Base64使用A–Z,a–z,0–9,+,/ 這64個字符實(shí)現(xiàn)對數(shù)據(jù)進(jìn)行加密。

import base64
str='admin'
str=str.encode('utf-8')
#加密
bs64=base64.b64encode(str)
print(bs64)
#解密
debs64=base64.b64decode(bs64)
print(debs64.decode())

三、DES/AES

DES全稱為Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的算法。該加密算法是一種對稱加密方式,其加密運(yùn)算、解密運(yùn)算需要使用的是同樣的密鑰(一組字符串)即可。

注意:

現(xiàn)在用AES這個標(biāo)準(zhǔn)來替代原先的DES。

AES和DES的區(qū)別

加密后密文長度的不同:

  • DES加密后密文長度是8的整數(shù)倍
  • AES加密后密文長度是16的整數(shù)倍

應(yīng)用場景的不同:

  • 企業(yè)級開發(fā)使用DES足夠安全
  • 如果要求高使用AES
  • 使用DES/AES進(jìn)行數(shù)據(jù)交互時要求雙方都擁有相同的私匙

破解方法

  • 暴力破解
  • DES如果使用 56 位的密鑰,則可能的密鑰數(shù)量是 2 的 56 次方個。只要計(jì)算足夠強(qiáng)大是可以被破解的
#需要下載安裝pyDes模塊
import binascii
from pyDes import des, CBC, PAD_PKCS5

def des_encrypt(secret_key,s):
? ? iv = secret_key
? ? k = des(secret_key,CBC,iv,pad=None,padmode=PAD_PKCS5)
? ? en = k.encrypt(s,padmode=PAD_PKCS5)
? ? return binascii.b2a_hex(en)

def des_decrypt(secret_key, s):
? ? iv = secret_key
? ? k = des(secret_key,CBC,iv,pad = None,padmode = PAD_PKCS5)
? ? de = k.decrypt(binascii.a2b_hex(s),padmode = PAD_PKCS5)
? ? return desecret_str = des_encrypt('12345678', 'I love YOU~')
print(secret_str)
clear_str = des_decrypt('12345678', secret_str)
print(clear_str)

四、RSA

RSA加密:

RSA加密算法是一種非對稱加密算法。在公開密鑰加密和電子商業(yè)中RSA被廣泛使用。

非對稱加密算法

非對稱加密算法需要兩個密鑰:

  • 公開密鑰(publickey:簡稱公鑰)
  • 私有密鑰(privatekey:簡稱私鑰)
  • 公鑰與私鑰是一對,如果用公鑰對數(shù)據(jù)進(jìn)行加密,只有用對應(yīng)的私鑰才能解密。因?yàn)榧用芎徒饷苁褂玫氖莾蓚€不同的密鑰,所以這種算法叫作非對稱加密算法。

注意:

  • 使用時都是使用公匙加密使用私匙解密。公匙可以公開,私匙自己保留。
  • 算法強(qiáng)度復(fù)雜、安全性依賴于算法與密鑰但是由于其算法復(fù)雜,而使得加密解密速度沒有對稱加密解密的速度快。

使用流程和場景介紹

  • 通過公匙加密,使用私匙解密。私匙是通過公匙計(jì)算生成的。假設(shè)ABC三方之間相互要進(jìn)行加密通信。大家相互之間使用公匙進(jìn)行信息加密,信息讀取時使用各自對應(yīng)的私匙進(jìn)行信息解密
  • 用戶輸入的支付密碼會通過RSA加密

公鑰私鑰生成方式

公私匙可以在線生成:

[http://web.chacuo.net/netrsakeypair]

import rsa

def rsaEncrypt(str):
? ? (pubkey,privkey)=rsa.newkeys(512)
? ? print("pub:",pubkey)
? ? print("priv:",privkey)

? ? content =str.encode('utf-8')

? ? crypto=rsa.encrypt(content,pubkey)
? ? return (crypto,privkey)

def rsaDecrypt(str,pk):
? ? content = rsa.decrypt(str,pk)
? ? con=content.decode('utf-8')
? ? return con

(deData,privKey)=rsaEncrypt("hello")
print('加密后的密文',deData)
content = rsaDecrypt(deData,privKey)
print(content)

到此這篇關(guān)于Python常見的幾種數(shù)據(jù)加密方式的文章就介紹到這了,更多相關(guān)Python 數(shù)據(jù)加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python單例模式實(shí)例詳解

    Python單例模式實(shí)例詳解

    這篇文章主要介紹了Python單例模式,結(jié)合實(shí)例形式分析了單例模式的概念、實(shí)現(xiàn)與使用方法、已經(jīng)相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-03-03
  • python相對包導(dǎo)入報“Attempted?relative?import?in?non-package”錯誤問題解決

    python相對包導(dǎo)入報“Attempted?relative?import?in?non-package”錯誤

    這篇文章主要介紹了python相對包導(dǎo)入報“Attempted?relative?import?in?non-package”錯誤,本文要在原理上解決?python當(dāng)中相對包導(dǎo)入出現(xiàn)的問題,需要的朋友可以參考下
    2023-02-02
  • 詳解Anconda環(huán)境下載python包的教程(圖形界面+命令行+pycharm安裝)

    詳解Anconda環(huán)境下載python包的教程(圖形界面+命令行+pycharm安裝)

    這篇文章主要介紹了Anconda環(huán)境下載python包的教程(圖形界面+命令行+pycharm安裝),這篇文章很適合小白入手級別的,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • Python實(shí)現(xiàn)統(tǒng)計(jì)文章閱讀量的方法詳解

    Python實(shí)現(xiàn)統(tǒng)計(jì)文章閱讀量的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何溧陽Python語言實(shí)現(xiàn)統(tǒng)計(jì)文章閱讀量的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-02-02
  • Pytorch之nn.Upsample()和nn.ConvTranspose2d()用法詳解

    Pytorch之nn.Upsample()和nn.ConvTranspose2d()用法詳解

    nn.Upsample和nn.ConvTranspose2d是PyTorch中用于上采樣的兩種主要方法,nn.Upsample通過不同的插值方法(如nearest、bilinear)執(zhí)行上采樣,沒有可學(xué)習(xí)的參數(shù),適合快速簡單的尺寸增加,而nn.ConvTranspose2d通過可學(xué)習(xí)的轉(zhuǎn)置卷積核進(jìn)行上采樣
    2024-10-10
  • 淺談Python中重載isinstance繼承關(guān)系的問題

    淺談Python中重載isinstance繼承關(guān)系的問題

    本篇文章主要介紹了淺談Python中重載isinstance繼承關(guān)系的問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Python 將 QQ 好友頭像生成祝福語的實(shí)現(xiàn)代碼

    Python 將 QQ 好友頭像生成祝福語的實(shí)現(xiàn)代碼

    這篇文章主要介紹了用 Python 將 QQ 好友頭像生成祝福語的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • python 裝飾器功能以及函數(shù)參數(shù)使用介紹

    python 裝飾器功能以及函數(shù)參數(shù)使用介紹

    之前學(xué)習(xí)編程語言大多也就是學(xué)的很淺很淺,基本上也是很少涉及到裝飾器這些的類似的內(nèi)容。總是覺得是一樣很神奇的東西,舍不得學(xué)(嘿嘿)。今天看了一下書籍。發(fā)現(xiàn)道理還是很簡單的
    2012-01-01
  • PyQt5 窗口切換與自定義對話框的實(shí)例

    PyQt5 窗口切換與自定義對話框的實(shí)例

    今天小編就為大家分享一篇PyQt5 窗口切換與自定義對話框的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python?OpenCV中常用圖片處理函數(shù)小結(jié)

    Python?OpenCV中常用圖片處理函數(shù)小結(jié)

    在計(jì)算機(jī)視覺和圖像處理領(lǐng)域,OpenCV(Open?Source?Computer?Vision?Library)是一個非常強(qiáng)大和流行的開源庫,本文將介紹一些常用的OpenCV函數(shù),希望對大家有所幫助
    2024-03-03

最新評論

荥经县| 兴海县| 密山市| 民权县| 壶关县| 富源县| 隆林| 洛川县| 拉萨市| 东阿县| 营山县| 昌江| 化州市| 浠水县| 石城县| 洪江市| 巴南区| 隆回县| 洞头县| 洪江市| 车险| 阿坝| 石嘴山市| 车险| 津市市| 淳安县| 太谷县| 襄樊市| 马边| 金川县| 新平| 武义县| 和田市| 墨江| 唐海县| 邵阳市| 那曲县| 凉城县| 资溪县| 崇阳县| 吴忠市|