Điểm:2

Có thể mã hóa các tệp bitmap .bmp bằng Stream Cipher Chacha20 không?

lá cờ in

Có lẽ điều này nghe giống như một câu hỏi ngu ngốc. Tôi xin lỗi vì điều đó.

Tôi chỉ muốn biết liệu có thể mã hóa tệp hình ảnh bitmap như *.BMP và tạo bản mã là hình ảnh bitmap tối nghĩa trong đó mỗi pixel là ngẫu nhiên (Hình ảnh có thể trông giống như TV analog không có ăng-ten)?

Paul Uszak avatar
lá cờ cn
Ý bạn là chỉ mã hóa raster để toàn bộ tệp vẫn là .BMP hợp lệ?
akez avatar
lá cờ in
@Paul Uszak, vâng chính xác.
Điểm:1
lá cờ in

Có, có thể mã hóa hình ảnh BMP bằng bất kỳ mật mã luồng nào.

Trước hết, bạn cần cắt 54 byte đầu tiên của hình ảnh BMP vào một tập tin khác. Tại thời điểm này, phần dữ liệu bắt đầu. Sau đó, phần còn lại có thể được mã hóa bằng bất kỳ mật mã dòng nào. Sau đó, thêm tiêu đề vào tệp được mã hóa.

Đây là ví dụ với OpenSSL. Tôi sẽ sử dụng AES với chế độ CTR trong đó chế độ CTR biến bất kỳ mật mã khối nào thành mật mã luồng.

#/bin/bash
#tệp gốc là tux.bmp
đầu -c 54 tux.bmp > tux_head.part
đuôi -c +55 tux.bmp > tux_data.part
openssl enc -aes-128-ctr -e -in tux_data.part -out aes-ctr-enc-data.part -K "01234567890123450123456789012345" -iv "00000000000000010000000000000001"
cp tux_head.phần mã hóa_tux.bmp
mèo aes-ctr-enc-data.part >> mã hóa_tux.bmp

Tôi đã sử dụng AES-CTR vì OpenSSL có ChaCha20-Poly1305 làm bộ mật mã là mã hóa được xác thực. Nó sẽ thêm thẻ, vì vậy nó không hữu ích ở đây.


hình ảnh đầu vào

nhập mô tả hình ảnh ở đây

hình ảnh đầu ra

nhập mô tả hình ảnh ở đây

Paul Uszak avatar
lá cờ cn
Cần `in` để trở thành `-in`.
Paul Uszak avatar
lá cờ cn
Và có một sự kỳ lạ. Bạn đã thử cái này chưa? Của tôi xuất hiện với một màu xanh lá cây. Đó có phải là một 'tính năng' của định dạng BMP không?
kelalaka avatar
lá cờ in
@PaulUszak Tôi đã sửa, kiểm tra và thêm kết quả vào câu trả lời, Bạn có thể kiểm tra tệp của mình không?
Paul Uszak avatar
lá cờ cn
Không. Mới thực hiện trên Tux và nó có cùng tông màu xanh lá cây, không phải kiểu bạn có :-( Tôi nghi ngờ rằng đó là tùy chọn tương thích với GIMP khi tôi sử dụng tùy chọn đó để tạo BMP của mình. Mã hóa hoạt động hoàn hảo mặc dù :-) Tôi sẽ để nó ở đây. Câu trả lời tốt.
kelalaka avatar
lá cờ in
Hấp dẫn. Tôi cũng đã sử dụng một trình xem, hiện đã được thử nghiệm với GIMP. Nó đang làm việc.
Paul Uszak avatar
lá cờ cn
https://pasteboard.co/K6biu3Y.bmp được thực hiện dưới dạng `openssl enc -aes-128-ctr -e -in pic_data.part -out aes-ctr-enc-data.part -K "aaaaaa" -iv "bbbbbb" `
kelalaka avatar
lá cờ in
Bạn đã kết hợp phần tiêu đề và raster được mã hóa chưa?
Paul Uszak avatar
lá cờ cn
Đúng. Dù sao, người xem sẽ không hiển thị raster dữ liệu thô mà không có thông tin tiêu đề. Bạn phải nhập dữ liệu thô, đặt kích thước và chỉ định định dạng và bảng màu. Đó là điều tôi đã làm bằng GIMPing. Tôi đặc biệt theo cách đó... Bot trò chuyện đang hét vào mặt tôi.
akez avatar
lá cờ in
@Paul Uszak Chacha20 đang sử dụng hằng số 128 bit, khóa 256 bit, bộ đếm 32 bit và nonce 96 bit. Điều đó có nghĩa là, nó sẽ làm tăng kích thước tệp của tệp, nhưng điều đó ổn với tôi. Vấn đề là vẫn có thể hiển thị bản mã dưới dạng bitmap raster?
kelalaka avatar
lá cờ in
Nó sẽ tăng kích thước tệp lên chỉ 96-bit, không có gì hơn. Ví dụ của tôi đã hiển thị raster dưới dạng hình ảnh, bạn đã kiểm tra chưa? Người ta có thể dễ dàng sử dụng lập trình để đạt được điều này.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.