2011-12-23 10 views
9

Tôi cần mã hóa một chuỗi bằng cách sử dụng lớp đệm Desede pkcs5. Tuy nhiên C# chỉ cung cấp đệm PKCS7. Vậy làm thế nào tôi có thể đạt được điều này?PKCS5Padding trong C#

Trả lời

11

Im không có thẩm quyền về vấn đề nhưng một google nhanh chóng quay này lên: http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/13a20d89-7d84-4f7d-8f5c-5ae108a7f5cf/

Dường 7 & 5 algs đệm. giống nhau.

+1

Tôi nghĩ một trong hai chỉ được xác định chính thức cho kích thước khối thành 8 byte, nhưng nói chung chúng phải giống nhau. Hầu hết các thư viện sẽ chỉ đơn giản là pad 090909090909090909 nếu văn bản thuần túy là 9 byte ngắn của kích thước khối, lên đến 10101010101010101010101010101010 cho AES tất nhiên, bởi vì cho CBC bạn cần ít nhất 1 padding byte. –

+0

@owlstead: Bạn nói đúng. PKCS # 5 chính thức dành cho khối 64 bit và PKCS # 7 cho khối 128 bit. Trong thực tế, các giải pháp thông thường là sử dụng bất cứ điều gì có sẵn và xem nếu nó hoạt động. 95% thời gian hai người họ sẽ trở thành như nhau. – rossum

+0

Có, tôi đã tìm thấy bài đăng đó. Tuy nhiên tôi đang sử dụng API bên ngoài để ảnh hưởng đến một số khoản thanh toán và đặc biệt yêu cầu đệm PKCS # 5 và tôi không chắc chắn API sẽ hoạt động như thế nào với lớp đệm PKCS # 7 vì vậy tôi đã yêu cầu đảm bảo không có cách đơn giản để mã hóa chuỗi việc sử dụng PKCS # 5 trong C# đảm bảo rằng tôi đang truyền API cho đúng dữ liệu – Jonny

3

Thử sử dụng thư viện riêng, chẳng hạn như BouncyCastle.

+0

Có, hãy kiểm tra lớp ** Org.BouncyCastle.Crypto.Paddings.Pkcs7Padding ** và phương thức _AddPadding_. –