Ein einfach zu verwendenes Python -Paket zum Implementieren und Experimentieren mit dem berühmten Des -Verschlüsselungsalgorithmus. Es implementiert sowohl klassische (Standardeinstellungen aus der Lehrbuchbeschreibung von DES) als auch nicht klassisches DES. Schauen Sie sich die App für eine sehr spezifische Implementierung an, die den Lawineneffekt und schwache Schlüssel unter Verwendung des Pakets demonstrieren.
Es gibt einige DES-Pakete für Python, aber keiner von ihnen bietet eine so hohe Flexibilität, um eine nicht klassische Version der DES zu implementieren. Dieses Paket zielt speziell darauf ab, mit den verschiedenen Hyperparamtern zu experimentieren, die während der Implementierung des DES optimiert werden können.
help(<function_name>) im Python -Interpreter ein.Bonus : Dieses Paket kann ein Lebenspunkt für CSE 537- Network Security Course an der IIT (BHU) sein.
*Einige davon müssen möglicherweise den Quellcode zum Zeitpunkt der aktuellen Version geändert werden
Führen Sie den folgenden Befehl in Ihrem Terminal/Eingabeaufforderung aus.
$ pip install DESfiddle
Hinweis : Wenn Sie nicht
pipinstalliert haben, befolgen Sie diese Schritte.
# Importing
import DESfiddle.utils as dfu
# Usage
permutation_arr = dfu.generate_permutation(64)
# Importing
from DESfiddle.utils import *
# or just specify the function name you wanna import
# Usage
permutation_arr = generate_permutation(64)
from DESfiddle.utils import *
# Inputs in binary setting
plaintext = "0101010101010101010101010101010101010101010101010101010101010101"
key = "1111111111111111111111111111111100000000000000000000000000000000"
# Settings
nor = 16
halfwidth = 32
hamming_dist = 1
# Hamming the plaintext in binary mode
ref_pt_arr = preprocess_plaintext(plaintext, halfwidth)
pt_arr = preprocess_plaintext(plaintext, halfwidth, hamming_dist)
key = preprocess_key(key, halfwidth)
rkb,rkh = generate_round_keys(key,nor, halfwidth)
ref_ciphertext, ref_round_ciphertexts = encrypt(ref_pt_arr, rkb, nor, halfwidth)
_, round_ciphertexts = encrypt(pt_arr, rkb, nor, halfwidth)
diff = calc_diff(ref_round_ciphertexts, round_ciphertexts)
# Hamming the key in binary mode
pt_arr = preprocess_plaintext(plaintext, halfwidth)
ref_key = preprocess_key(key,halfwidth)
key = preprocess_key(key, halfwidth, hamming_dist)
ref_rkb, ref_rkh = generate_round_keys(ref_key, nor, halfwidth)
rkb,_ = generate_round_keys(key, nor, halfwidth)
ref_ciphertext, ref_round_ciphertexts = encrypt(pt_arr, ref_rkb, nor, halfwidth)
_, round_ciphertexts = encrypt(pt_arr, rkb, nor, halfwidth)
diff = calc_diff(ref_round_ciphertexts, round_ciphertexts)
from DESfiddle.utils import *
# Inputs in ASCII setting
plaintext = "This is so cool"
key = "Yesss"
# Settings
nor = 16
halfwidth = 32
hamming_dist = 1
# Preprocessing when input in ASCII
plaintext = txt_to_hex(plaintext)
plaintext = hex_to_bin(plaintext)
key = txt_to_hex(key)
key = hex_to_bin(key)
# Hamming the plaintext in binary mode
ref_pt_arr = preprocess_plaintext(plaintext, halfwidth)
pt_arr = preprocess_plaintext(plaintext, halfwidth, hamming_dist)
key = preprocess_key(key, halfwidth)
rkb,rkh = generate_round_keys(key,nor, halfwidth)
ref_ciphertext, ref_round_ciphertexts = encrypt(ref_pt_arr, rkb, nor, halfwidth)
_, round_ciphertexts = encrypt(pt_arr, rkb, nor, halfwidth)
diff = calc_diff(ref_round_ciphertexts, round_ciphertexts)
# Hamming the key in binary mode
pt_arr = preprocess_plaintext(plaintext, halfwidth)
ref_key = preprocess_key(key,halfwidth)
key = preprocess_key(key, halfwidth, hamming_dist)
ref_rkb, ref_rkh = generate_round_keys(ref_key, nor, halfwidth)
rkb,_ = generate_round_keys(key, nor, halfwidth)
ref_ciphertext, ref_round_ciphertexts = encrypt(pt_arr, ref_rkb, nor, halfwidth)
_, round_ciphertexts = encrypt(pt_arr, rkb, nor, halfwidth)
diff = calc_diff(ref_round_ciphertexts, round_ciphertexts)
Vielen Dank, dass Sie sich die Zeit genommen haben, um einen Beitrag zu leisten!
Das Folgende ist eine Reihe von Richtlinien für den Beitrag zu Desfiddle. Dies sind nur Richtlinien, keine Regeln. Verwenden Sie daher Ihr bestes Urteilsvermögen und Sie können Änderungen an diesem Dokument in einer Pull -Anfrage vorschlagen.
Desfiddle ist über Python gebaut. Wenn Sie also neu in Python sind, besuchen Sie bitte diese großartige Website.
Stellen Sie sicher, dass der Fehler nicht bereits gemeldet wurde, indem Sie in Problemen nach GitHub suchen. Wenn Sie kein offenes Problem finden, das sich mit dem Fehler befasst, öffnen Sie ein neues Problem.
Detaillierte Informationen sind sehr hilfreich, um ein Problem zu verstehen, zum Beispiel:
Pull -Anfragen sind immer willkommen.
python -m unittest aus, um Ihren Code zu testen, bevor Sie git commit .Folgt Syntax vm.mp zuerst ist wichtig und bedeutet nicht rückwärts kompatible Änderungen. Zweitens ist geringfügig und bedeutet rückwärts kompatible Änderungen. Dritter ist Patch und bedeutet kleine rückwärts kompatible Änderungen.
Der manuelle Ort der Wahrheitsquelle für die Version ist bei setup.py