2011-10-06 17 views
10

Tôi có một nhị phân mà tôi muốn làm xáo trộn và đưa ra cho người dùng. Giả sử tôi sử dụng phiên bản nhị phân của dữ liệu nhị phân của tôi để tuần tự dữ liệu bằng cách sử dụng định dạng .NET. Sau đó chúng ta có thể khử chất lượng dữ liệu bằng binary nhị phân không?Serialization and Obfuscation in .NET

Tôi muốn phân phát các tệp nhị phân bị xáo trộn cùng với dữ liệu được tuần tự hóa. Nếu câu trả lời cho câu hỏi trên là có, tôi có thể chia sẻ dữ liệu được tuần tự hóa giữa những người dùng. Nếu không, Tôi sẽ phải cung cấp dữ liệu được tuần tự hóa riêng cho từng người dùng.

+0

Xin xem http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts/ –

+0

Tôi không downvote. –

Trả lời

3

Đọc sai câu hỏi. Khi nhị phân bị làm xáo trộn, bạn cần phải cẩn thận khi tên lớp/không gian tên được thay đổi vv. Điều này sẽ phá vỡ không chỉ giữa các tập tin nhị phân obfuscated/non-obfuscated, mà còn giữa các phiên bản khác nhau nói chung.

Sản phẩm này loại trừ các lớp được đánh dấu là: http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm (Đây không phải là đề xuất, tôi chưa bao giờ sử dụng - bạn sẽ phải kiểm tra và xem chi phí có đáng giá không).

Ngoài ra, bạn có thể viết bộ nối tiếp tùy chỉnh tùy thuộc vào số lượng dữ liệu bạn đang sắp xếp.


[Original trả lời]

Tại sao các bạn Obfuscating dữ liệu? Tôi chỉ có thể tưởng tượng nó là để ngăn ai đó chỉnh sửa hoặc ngăn người khác đọc nội dung.

Nếu đó là để ngăn ai đó chỉnh sửa nó thì tôi có thể đề nghị bạn bao gồm một băm dữ liệu, và sau đó không làm phiền làm xáo trộn dữ liệu đó.

Nếu đó là để ngăn ai đó đọc nó thì tôi đề nghị bạn mã hóa dữ liệu thay vì sau khi nó được đăng.

Có rất nhiều ví dụ về cả hai nhưng nếu bạn muốn một ví dụ cho tôi biết.

+0

câu hỏi không phải là về dữ liệu bị xáo trộn, nhưng về một nhị phân bị xáo trộn. Bạn có thể serialize dữ liệu với nó và deserialize nó với một phiên bản unobfuscated của cùng một chương trình? – tanascius

2

Bạn đã thử sử dụng EazFuscator? Nó cho phép một số lược đồ đổi tên tùy chỉnh cho phép bạn duy trì tên chính xác trong một số trường hợp nhất định, ví dụ, các phương thức bên ngoài. Nó không được cập nhật với các phiên bản mới nhất của .NET 4.0+ hoặc WCF.

Bạn cũng có thể sử dụng .NET Reactor, một dịch vụ obfuscator vượt xa cả EazFuscator và Dotfuscator trong khả năng, nhưng nó có chi phí.

Lò phản ứng .NET cũng cho phép mã hóa mã, thay vì làm xáo trộn, như đã đề xuất trước đó sẽ giải quyết được sự cố.

10

Dường như có sự nhầm lẫn giữa dữ liệu nhị phân và dữ liệu được tuần tự hóa.Nếu bạn tuần tự hóa lớp của bạn bằng cách sử dụng serializers mặc định, thì tên lớp và giá trị thuộc tính/trường được sử dụng như chuỗi trong dữ liệu được tuần tự hóa đó - vì vậy nếu bạn làm xáo trộn mã nhị phân của bạn, thì dữ liệu tuần tự sử dụng nhị phân đó sẽ có tên obfuscated và nhị phân obfuscated sẽ không thể đọc dữ liệu tuần tự được tạo ra bởi nhị phân obfuscated của bạn nếu bạn làm bất cứ điều nào sau đây:

  1. Sử dụng lớp đổi tên trên lớp theo sê-ri
  2. Sử dụng thành viên đổi tên trên lớp theo sê-ri

Dưới đây là một số tùy chọn để giải quyết vấn đề này:

  1. Tôi đã không sử dụng nó trong một thời gian, vì vậy nếu bạn đang sử dụng trình định dạng nhị phân, tệp bằng cách cung cấp các hàm tạo xử lý SerializationInfo và StreamingContext. Nếu bạn google xung quanh cho một mẫu bạn sẽ tìm thấy một (đây là một trong tôi tìm thấy: Serialize Objects to File). Bạn có thể không tìm thấy rất nhiều bài viết mới trên đó bằng cách sử dụng phương pháp này vì hầu hết mọi người không tìm thấy nó rất thú vị, tuy nhiên nó thực sự là cách dễ nhất để xác định cách lớp của bạn tiết kiệm chính nó và repopulates chính nó bằng cách sử dụng định dạng nhị phân. Trong constructor bạn phải thực hiện, bạn sử dụng các chuỗi cho các cặp khóa/giá trị để được serialized - trong obfuscation những chuỗi có thể sẽ được mã hóa (OK), và tuyên bố thiết lập thuộc tính sẽ được đổi tên và đồng bộ hóa với tên/tên thành viên bị xáo trộn của bạn - vì vậy nó sẽ làm việc cho cả các hội đồng bị xáo trộn và không bị quấy rầy.

  2. Một tùy chọn khác để loại trừ lớp bạn đang sắp xếp theo thứ tự từ sự xáo trộn và chỉ mã hóa tệp dữ liệu.

+0

Công nghệ thực tế được sử dụng ở đây được gọi là Sê-ri thay thế. Có thể muốn thêm rằng một nơi nào đó trong trường hợp ai đó thực hiện một tìm kiếm trên thay thế tuần tự hóa. –