簡體   English   中英

讀取bmp文件以進行隱寫

[英]Reading bmp file for steganography

我正在嘗試在C ++(Turbo)中讀取bmp文件。 但即時通訊無法打印二進制流。

我想將txt文件編碼並解密。 我怎樣才能做到這一點。 我讀到bmp文件頭是54字節。 但是我應該如何以及在哪里將txt文件附加在bmp文件中。

我只知道Turbo C ++,所以如果您提供與主題相關的解決方案或建議,這對我會有所幫助。

int main()
{
ifstream fr; //reads
ofstream fw; // wrrites to file
char c;
int random;
clrscr();
char file[2][100]={"s.bmp","s.txt"};

fr.open(file[0],ios::binary);//file name, mode of open, here input mode i.e. read only
if(!fr)
    cout<<"File can not be opened.";
fw.open(file[1],ios::app);//file will be appended
if(!fw)
    cout<<"File can not be opened";
while(!fr)
    cout<<fr.get(); // error should be here. but not able to find out what error is it

fr.close();
fw.close();
getch();
}

當我以二進制模式傳遞txt文件時,此代碼運行良好

編輯:

while(!fr)
    cout<<fr.get(); 

我無法在控制台中看到二進制數據,當我在fr.get(c)中傳遞字符參數時,這對於文本來說運行良好

關於隱寫術,據我所知,您不是在“附加”文本。 您正在對像素進行細微的更改(陰影等),以隱藏視覺上不明顯的東西,但是應該可以通過檢查像素進行反向解密。 應該與標題無關。 因此,無論如何,我本來無濟於事的答案的目的是鼓勵您進入並了解您尋求答案的主題,以便您可以設計解決方案,然后來詢問有關實現的詳細信息。

您需要修改位模式,而不要在文件中添加任何文本。 一個簡單的示例:讀取位圖內容(在標頭之后),並從每個字節中犧牲一點來保存內容

我認為您的問題已經得到答案: 使用C以二進制表示形式打印int

將您的char轉換為int即可完成操作(至少對於輸出部分而言)

如果在Windows上,請重新編碼以使用CreateFile並查看真正的錯誤是什么。 如果在Linux上,則與open(2)相同。 調試完問題后,您可能可以改回iostream。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM