📄
字号:
//---------------------------------------------
// 基于LSB的信息隐藏
//---------------------------------------------
int FTDib::LSBCoder(const char* textFileName)
{
ifstream textFile;
textFile.open(textFileName,ios::in | ios::binary);
textFile.seekg(0,textFile.end);
DWORD textFileLength = textFile.tellg();
//判断位图是否够存储隐藏的信息
DWORD colorTableSize = m_numberOfColors * sizeof(RGB_Element);
if((size - colorTableSize)<textFileLength*8)
{
return -1; //不够隐藏
}
BYTE* pTextFile = new BYTE[textFileLength+1];
cout<<"隐藏时文件长度:"<<textFileLength<<endl;
textFile.seekg(0,textFile.beg);
textFile.read((char*)pTextFile,textFileLength);
textFile.close();
BYTE textData;
for(int i=0,k=0; i< textFileLength; ++i)
{
for(int j=0; j<8; ++j)
{
textData = pTextFile[i]>>j;
textData = textData&0x01;
if(textData==0)
{
pDib[k+32] = pDib[k+32]&0xfe;
}
else
{
pDib[k+32] = pDib[k+32]|0x01;
}
++k;
}
}
cout<<"信息隐藏完毕"<<endl;
//在前四个字节中写入text文件数据长度
DWORD length;
for(int i=0; i<32; ++i)
{
length = textFileLength>>i;
length = length&0x00000001;
if(length==0)
{
pDib[i] = pDib[i]&0x1e;
}
else
{
pDib[i] = pDib[i]|0x01;
}
}
return 0;
}
//---------------------------------------------
// 解码基于LSB的信息隐藏
//---------------------------------------------
void FTDib::LSBDecoder(const char* textFileName)
{
DWORD length = 0x00000000;
BYTE bit;
//获取txt文件长度
for(int i=0; i<32; ++i)
{
bit = pDib[i]&0x01;
if(bit==0)
{
length = length&0x7fffffff;
}
else
{
length = length|0x80000000;
}
if (i<31) length = length>>1;
}
cout<<"解码时文件长度:"<<length<<endl;
//开始解码
BYTE* pTextFile = new BYTE[length];
BYTE textData;
for(int i=0,k=0; i<length*8; ++i)
{
if(i && i%8==0){++k;}
textData = pDib[i+32]&0x01;
if(textData==0)
{
pTextFile[k] = pTextFile[k]&0x7f;
}
else
{
pTextFile[k] = pTextFile[k]|0x80;
}
if (i%8 != 7) pTextFile[k] = pTextFile[k]>>1;
}
cout<<"解码完毕"<<endl;
ofstream textFile;
textFile.open(textFileName,ios::out | ios::binary);
textFile.write((char*)pTextFile,length);
textFile.close();
delete pTextFile;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -