DES(python)


DES

what?

對稱的加密算法

why?

如何保證安全性?

通過各種置換操作,對明文進行加密。

加解密效率高

加密秘鑰==解密密鑰

相對RSA來說如何不安全?

因為加密密鑰和解密密鑰相同,加密的安全性就依賴於密鑰的安全性,而在網絡交互過程中,環境復雜,密鑰的保密安全性難以保證。

how?

加密


des對64位的明文進行分組操作,通過一個初始置換,將明文分成左半部分&右半部分。然后進行16輪完全相同的運算(f),在運算過程中數據與密鑰結合,經過16輪后,左右半部分結合在一起,最后經過一個末置換(初始置換的逆置換),完成加密過程。

DES的運行模式

模式 描述 用途
ECB 每個明文獨立地以同一密鑰加密 傳送端數據(如一個加密密鑰)
CBC 加密算法的輸入時當前明文組與前一密文組的異或 傳送數據分組,認證
CFB 每次只處理輸入的 比特,將上一次的密文用作加密算法的輸入以產生偽隨機輸出,改輸出再與當前明文異或以產生當前密文 傳送數據流,認證
OFB 與CFB類似,不同再與本次加密算法的輸入為前一次加密算法的輸出 有擾信道上傳送數據流

代碼:

來源http://whitemans.ca/des.html

# encoding: utf-8
import pyDes

# For Python3, you'll need to use bytes, i.e.:
#   data = b"Please encrypt my data"
#   k = pyDes.des(b"DESCRYPT", pyDes.CBC, b"\0\0\0\0\0\0\0\0", pad=None, padmode=pyDes.PAD_PKCS5)

data = "加密Please encrypt my data"
data = bytes(data,encoding='utf-8') #將utf8轉化為byte,注意加密的數據必須為byte
k = pyDes.des("DESCRYPT", pyDes.CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=pyDes.PAD_PKCS5)
d = k.encrypt(data)
print("Encrypted: %r" % d)
print("Decrypted: %r" % k.decrypt(d))
assert k.decrypt(d) == data


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM