Paket Python yang mudah digunakan untuk menerapkan dan bereksperimen dengan algoritma enkripsi DES yang terkenal. Ini mengimplementasikan kedua klasik (pengaturan default dari deskripsi buku teks DES) dan DES non-klasik. Lihatlah DES App untuk implementasi yang sangat spesifik yang menunjukkan efek longsor dan kunci lemah menggunakan paket.
Ada beberapa paket DES untuk Python tetapi tidak ada yang menawarkan fleksibilitas tinggi untuk mengimplementasikan versi DES yang tidak klasik. Paket ini ditujukan khusus untuk bereksperimen dengan hyperparamters yang berbeda yang dapat diubah saat menerapkan DES.
help(<function_name>) di penerjemah Python.Bonus : Paket ini bisa menjadi penyelamat hidup untuk kursus keamanan jaringan CSE 537- yang diajarkan di IIT (BHU).
*Mengutak -atik beberapa di antaranya mungkin memerlukan mengubah kode sumber pada rilis saat ini
Jalankan perintah berikut di terminal/perintah Anda prompt-
$ pip install DESfiddle
Catatan : Jika Anda tidak menginstal
pip, ikuti langkah -langkah ini.
# 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)
Terima kasih telah meluangkan waktu untuk berkontribusi!
Berikut ini adalah serangkaian pedoman untuk berkontribusi pada Desfiddle. Ini hanya pedoman, bukan aturan, jadi gunakan penilaian terbaik Anda dan jangan ragu untuk mengusulkan perubahan pada dokumen ini dalam permintaan tarik.
Desfiddle dibangun di atas Python. Jadi jika Anda baru mengenal Python, silakan kunjungi situs web yang hebat ini.
Pastikan bug belum dilaporkan dengan mencari di GitHub dalam masalah. Jika Anda tidak dapat menemukan masalah terbuka yang membahas bug, buka masalah baru.
Informasi terperinci sangat membantu untuk memahami suatu masalah, misalnya-
Permintaan tarik selalu diterima.
python -m unittest untuk menguji kode Anda sebelum Anda git commit .Mengikuti Sintaks VM.MP First adalah utama dan berarti tidak ada perubahan yang kompatibel. Kedua adalah kecil dan berarti perubahan yang kompatibel ke belakang. Ketiga adalah tambalan dan berarti perubahan yang kompatibel dengan mundur kecil.
Tempat manual sumber kebenaran untuk versi ini ada di setup.py