cuốn sách gpt4 ai đã làm

Chuyển đổi giải mã C# sang Python PyDes

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 12:51:23 27 4
mua khóa gpt4 Nike

Tôi gặp sự cố khi chuyển đổi mã từ C# sang Python. hiện hữuBlog C# của Martijnlà một chương trình mã hóa/giải mã tuyệt vời [được đính kèm bên dưới] nhưng tôi không thể chuyển đổi trực tiếp nó sang phiên bản python pyDes [Ví dụ bên dưới]

    chuỗi tĩnh công khai DecryptString(chuỗi tin nhắn, chuỗi mật khẩu)
{
byte[] Kết quả;
System.Text.UTF8Encoding UTF8 = System.Text.UTF8Encoding mới();

// Bước 1. Chúng ta băm cụm mật khẩu bằng MD5
// Chúng tôi sử dụng trình tạo băm MD5 vì kết quả là một mảng byte 128 bit
// là độ dài hợp lệ cho bộ mã hóa TripleDES mà chúng tôi sử dụng bên dưới

MD5CryptoServiceProvider HashProvider = MD5CryptoServiceProvider mới();
byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Cụm mật khẩu));

// Bước 2. Tạo đối tượng TripleDESCryptoServiceProvider mới
TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();

// Bước 3. Thiết lập bộ giải mã
TDESAlgorithm.Key = TDESKey;
TDESAlgorithm.Mode = CipherMode.ECB;
TDESAlgorithm.Padding = PaddingMode.PKCS7;

// Bước 4. Chuyển đổi chuỗi đầu vào thành byte[]
byte[] DataToDecrypt = Convert.FromBase64String(Message);

// Bước 5. Cố gắng giải mã chuỗi
thử
{
Bộ giải mã ICryptoTransform = TDESAlgorithm.CreateDecryptor();
Kết quả = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length);
}
finally
{
// Xóa các dịch vụ TripleDes và Hashprovider khỏi mọi thông tin nhạy cảm
TDESAlgorithm.Clear();
HashProvider.Clear();
}

// Bước 6. Trả về chuỗi được giải mã ở định dạng UTF8
trả về UTF8.GetString(Kết quả);
}

PyDES:

từ nhập pyDes *


data = "Hãy mã hóa dữ liệu của tôi"
k = des("DESCRYPT", ECB, "\0\0\0\0\0\0\0\0", pad=Không, padmode=PAD_PKCS5)
d = k.encrypt(dữ liệu)
in "Đã mã hóa: %r" %d
in "Đã giải mã: %r" % k.decrypt(d)
khẳng định k.decrypt(d, padmode=PAD_PKCS5) == dat

Tôi đã sửa đổi pyDes ban đầu để sử dụng ECB thay vì CBC. Không một chuỗi nào khớp và tôi kiệt sức. Xin hãy giúp đỡ! Cảm ơn bạn!

câu trả lời hay nhất

Không sao đâu --- đã tìm ra rồi.

Nếu bạn thay đổi dòng này trong pyDes

in "Đã mã hóa: %r" %d

đến

print "Đã mã hóa: %r" % d.encode('base64')

Sau đó, mã khớp chính xác.

Để so sánh, hãy chạy mã gốc từ trang của Martijn: [đầu ra]

Lời nhắn: Thế giới này tròn, không phẳng, đừng tin họ!
Mật khẩu: bí mật
Chuỗi được mã hóa: pafHnI124lxzCr+93COqxfgOTan8x9oPzX4R/PDYkBnrjufk0/7mesG5tmS2AU
Pxna3z0jY+7II=
Chuỗi giải mã: Thế giới này tròn chứ không phẳng, đừng tin họ!

Đây là mã được sửa đổi từ pyDes - bạn cần điền mật khẩu bằng md5Hash

nhập md5
từ nhập pyDes *

Msg = "Thế giới này tròn, không phẳng, đừng tin họ!"
Mật khẩu = "bí mật"

m=md5.new()
m.update(Mật khẩu)

k = triple_des(m.digest() , ECB,padmode=PAD_PKCS5)
d = k.encrypt(Msg)

print "Đã mã hóa: %r" % d.encode('base64')
in "Đã giải mã: %r" % k.decrypt(d)
khẳng định k.decrypt(d, padmode=PAD_PKCS5) == Msg

Đầu ra:

Đã mã hóa: 'pafHnI124lxzCr+93COqxfgOTan8x9oPzX4R/PDYkBnrjufk0/7mesG5tmS2AUPxna3z
0jY+7II=\n'
Giải mã: "Thế giới này tròn, không phẳng, đừng tin họ!"

Tôi hy vọng điều này sẽ giúp ích cho người tiếp theo!!!!

Về c# - Chuyển đổi giải mã C# sang Python PyDes, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/5903135/

27 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress