2011-09-01 27 views
6

Để mã hóa trong Java ... bài viết tại http://cwe.mitre.org/data/definitions/329.html nói rằng Vector khởi tạo phải khác nhau mỗi lần, nhưng nếu tôi sử dụng IV khác để giải mã hơn mã tôi sử dụng để mã hóa, Tôi nhận được ký tự rác thay vì dữ liệu tôi mong đợi.Cách tạo IvParameterSpec ngẫu nhiên nhưng vẫn giải mã

Cách thích hợp để mã hóa trên một máy chủ và giải mã trên một máy chủ khác mà không cần phải liên lạc IV qua lại giữa các máy chủ là gì?

Kỹ thuật phổ biến có vẻ là mã hóa một mảng byte, nhưng được cho là không an toàn ???

+0

Bạn hiểu nhầm bài viết. IV phải khác nhau đối với mỗi thông điệp được mã hóa, nhưng bạn phải sử dụng cùng một IV để giải mã một thông báo đã cho đã được sử dụng để mã hóa nó. Xem câu trả lời của Jon Skeet dưới đây. –

Trả lời

9

I tin IV giống như một muối - nó không phải là một bí mật, nó chỉ được sử dụng để giới thiệu thêm một yếu tố ngẫu nhiên để cùng một thông điệp được mã hóa với cùng một khóa vẫn đi ra khác nhau mỗi lần.

Vì vậy, bạn có thể truyền IV được sử dụng để mã hóa như là một phần của giá trị được mã hóa, giống như bạn lưu trữ muối cùng với giá trị băm cho giá trị băm.

Tất nhiên, tôi có thể hoàn toàn không chính xác ...

+1

Điều này là chính xác, IV là XOR'd với khối đầu tiên của văn bản thuần túy, sau đó được mã hóa bằng khóa. Các khối còn lại là XOR'd với khối trước đó. Điều này được gọi là Cipher Block Chaining (CBC). Bạn phải giải mã với cùng IV mà bạn đã sử dụng để mã hóa. Nó không phải là một bí mật, và có thể được gửi/lưu trữ đồng bằng. Bạn nên tạo ngẫu nhiên một IV mới mỗi khi bạn mã hóa dữ liệu. Mục đích của nó là thêm tính ngẫu nhiên vào dữ liệu được mã hóa, vì vậy cùng một dữ liệu, được mã hóa bằng cùng một khóa, sẽ tạo ra một văn bản mã hóa khác nhau. –

+0

giả sử nếu máy chủ mã hóa bản rõ, máy chủ phải gửi văn bản được mã hóa cùng với IV tới máy khách? Và IV có thể được gửi như nó là một văn bản thuần túy không? – OnePunchMan

+0

@kaze: Không rõ bạn đang nói về kịch bản gì - nhưng có, bạn có thể gửi IV dưới dạng văn bản thuần túy. –

Các vấn đề liên quan