2009-04-10 43 views
6

Tôi muốn phân phối một vài hình ảnh và không cho phép người khác xem chúng trừ khi họ đang sử dụng chương trình của tôi. Mục đích của tôi là sử dụng các tệp JPG, trong đó tôi sẽ thay đổi tiêu đề để người xem hình ảnh khác không thể đọc chúng nữa. Ví dụ tôi có thể xóa các byte 7-10 là chữ ký ma thuật cho JPG. Sau đó, chương trình của tôi sẽ xây dựng lại tiêu đề và hiển thị tệp JPG.Làm xáo trộn hình ảnh

Câu hỏi: làm cách nào để thực hiện điều này khi đang di chuyển mà không đọc tệp JPG "bị hỏng", khôi phục tiêu đề, lưu tệp tốt vào đĩa rồi tải lại tệp đó dưới dạng tệp JPG "tốt"?

+0

Chỉ cần nhớ rằng nếu ai đó có thể xem hình ảnh bằng chương trình của bạn, họ có thể giải nén nó. Tất cả những gì họ cần làm là in màn hình. – Herms

+0

Tôi biết. Điều này là tốt cho tôi. Cảm ơn Herms. – Ampere

Trả lời

16

Nạp "gãy" tập tin vào một TMemoryStream, vá các byte trong bộ nhớ, và sử dụng TGraphic.LoadFromStream() để tải các tập tin JPG cố định.

+0

Darn, bạn nhanh. :-) –

+1

> Darn, bạn nhanh. :-) - Ken White Đồng ý. Cảm ơn! Tôi hạnh phúc :) – Ampere

+1

Thay vì TGraphic bạn có thể sử dụng [TSynPicture] (http://blog.synopse.info/post/2010/03/20/GIF,-TIF,-PNG-and-JPG-pictures-TGraphic- đọc/ghi-qua-GDI) lớp. –

2

Câu trả lời của Mghie là tốt như bạn sẽ tìm thấy, nhưng nó không có khả năng là quá hiệu quả. Nếu ai đó muốn xem hình ảnh của bạn và họ biết bất kỳ điều gì về định dạng hình ảnh, họ sẽ mở nó trong trình chỉnh sửa hex và rất có thể nhận ra những gì họ xem dưới dạng JPEG với tiêu đề ma thuật đã bị xóa.

Nếu bạn thực sự muốn giữ ai đó xem hình ảnh của mình, hãy xây dựng định dạng hình ảnh của riêng bạn (nó không khó bằng âm thanh, thực sự) và đặt ít siêu dữ liệu nhất có thể và sau đó hy vọng nó hoạt động. Hoặc mã hóa chúng hoặc đặt chúng vào một kho lưu trữ, (xây dựng định dạng lưu trữ của riêng bạn để có kết quả tốt nhất) và hy vọng rằng hoạt động. Điều cuối cùng, mọi thứ được mã hóa phải được giải mã trước khi nó có thể được hiển thị, và bất kỳ hacker đủ tài năng nào cũng có thể theo dõi con đường của họ thông qua thói quen giải mã của bạn và tìm ra cách thức hoạt động của nó. Tại sao bạn đang cố giấu mọi thứ khỏi người dùng của mình?

1

Bạn có thể làm cho nó khó khăn hơn cho chúng bằng cách đóng gói byte hình ảnh dưới dạng tài nguyên được mã hóa. Nhưng cũng giống như bất cứ điều gì khác nếu họ có quyền truy cập vào các tập tin có thể có được những hình ảnh ra. Nó chỉ phụ thuộc vào nỗ lực sẵn sàng sử dụng.

+0

> Nó chỉ phụ thuộc vào nỗ lực sẵn sàng sử dụng. Không quá nhiều. Tôi chấp nhận rằng ai đó có thể giải mã hình ảnh. Có lẽ sau này tôi sẽ thêm mã hóa bổ sung. Nhưng dù sao cũng vô ích vì bất cứ ai cũng có thể PrintScreen hình ảnh. – Ampere

6

Mã hóa chúng. Tải hình ảnh được mã hóa, giải mã trong bộ nhớ và sau đó thực hiện loadfromstream như mghie đề xuất.

4

Tại sao không chỉ mã hóa hình ảnh bằng khóa riêng và phân phối khóa công khai của bạn cho những người bạn muốn xem hình ảnh? dễ dàng hơn để phân phối khóa công khai hơn là viết một số phần mềm tùy chỉnh và phân phối phần mềm đó. Đừng quên; bất cứ thứ gì hiển thị trên màn hình đều có thể được chụp màn hình. Thực tế, một ảnh JPEG bị xáo trộn tùy chỉnh chỉ có thể được hiển thị với ứng dụng của bạn là không có sự bảo vệ. Cũng đừng quên; mọi người chỉ có thể phân phối phần mềm của bạn với hình ảnh bị xé.

+0

Điểm chụp màn hình là điểm tốt nhất. Bạn có thể đặt một cái gì đó trong suốt hình ảnh được hiển thị bằng cách sử dụng steganography. Sau đó, nếu hình ảnh bị xâm phạm có sẵn cho bạn, bạn có thể tìm ra bản sao của ai là nguồn. Điều này có hữu ích hay không tùy thuộc vào miền/nhu cầu của bạn. – Argalatyr

0

Tùy thuộc vào mức độ bảo mật bạn cần, bạn có thể làm điều gì đó đơn giản như làm xáo trộn phần mở rộng của tệp thành tiện ích mở rộng chỉ được mở bằng ứng dụng của bạn. Điều này sẽ chỉ hoạt động nếu không phải hình ảnh siêu bí mật mà bạn đang thay đổi.

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