隨筆:53 文章:0 評論:86 引用:0
浪漫主義
專注力才是王道
首頁
發新隨筆
發新文章
聯系
聚合
管理
初識LSB信息隱藏算法
關于BMP圖像的結構網上資料很多,這里不再驁述。
算法是將一個文件以二進制打開,將每一位存放到圖片數據區的像素的每個字節的最低位。
以達到信息隱藏的目的。
1
//
---------------------------------------------
2
//
基于LSB的信息隱藏
3
//
---------------------------------------------
4
int
FTDib::LSBCoder(
const
char
*
textFileName)
5
{
6
ifstream textFile;
7
textFile.open(textFileName,ios::
in
|
ios::binary);
8
textFile.seekg(
0
,textFile.end);
9
DWORD textFileLength
=
textFile.tellg();
10
//
判斷位圖是否夠存儲隱藏的信息
11
DWORD colorTableSize
=
m_numberOfColors
*
sizeof
(RGB_Element);
12
if
((size
-
colorTableSize)
<
textFileLength
*
8
)
13
{
14
return
-
1
;
//
不夠隱藏
15
}
16
17
18
BYTE
*
pTextFile
=
new
BYTE[textFileLength
+
1
];
19
cout
<<
"
隱藏時文件長度:
"
<<
textFileLength
<<
endl;
20
textFile.seekg(
0
,textFile.beg);
21
textFile.read((
char
*
)pTextFile,textFileLength);
22
textFile.close();
23
24
BYTE textData;
25
for
(
int
i
=
0
,k
=
0
; i
<
textFileLength;
++
i)
26
{
27
for
(
int
j
=
0
; j
<
8
;
++
j)
28
{
29
textData
=
pTextFile[i]
>>
j;
30
textData
=
textData
&
0x01
;
31
if
(textData
==
0
)
32
{
33
pDib[k
+
32
]
=
pDib[k
+
32
]
&
0xfe
;
34
}
35
else
36
{
37
pDib[k
+
32
]
=
pDib[k
+
32
]
|
0x01
;
38
}
39
++
k;
40
}
41
}
42
cout
<<
"
信息隱藏完畢
"
<<
endl;
43
//
在前四個字節中寫入text文件數據長度
44
DWORD length;
45
for
(
int
i
=
0
; i
<
32
;
++
i)
46
{
47
length
=
textFileLength
>>
i;
48
length
=
length
&
0x00000001
;
49
if
(length
==
0
)
50
{
51
pDib[i]
=
pDib[i]
&
0x1e
;
52
}
53
else
54
{
55
pDib[i]
=
pDib[i]
|
0x01
;
56
}
57
}
58
59
return
0
;
60
61
62
}
63
64
//
---------------------------------------------
65
//
解碼基于LSB的信息隱藏
66
//
---------------------------------------------
67
void
FTDib::LSBDecoder(
const
char
*
textFileName)
68
{
69
DWORD length
=
0x00000000
;
70
BYTE bit;
71
//
獲取txt文件長度
72
for
(
int
i
=
0
; i
<
32
;
++
i)
73
{
74
bit
=
pDib[i]
&
0x01
;
75
if
(bit
==
0
)
76
{
77
length
=
length
&
0x7fffffff
;
78
}
79
else
80
{
81
length
=
length
|
0x80000000
;
82
}
83
if
(i
<
31
) length
=
length
>>
1
;
84
}
85
86
cout
<<
"
解碼時文件長度:
"
<<
length
<<
endl;
87
//
開始解碼
88
BYTE
*
pTextFile
=
new
BYTE[length];
89
BYTE textData;
90
for
(
int
i
=
0
,k
=
0
; i
<
length
*
8
;
++
i)
91
{
92
if
(i
&&
i
%
8
==
0
)
{
++
k;}
93
textData
=
pDib[i
+
32
]
&
0x01
;
94
if
(textData
==
0
)
95
{
96
pTextFile[k]
=
pTextFile[k]
&
0x7f
;
97
}
98
else
99
{
100
pTextFile[k]
=
pTextFile[k]
|
0x80
;
101
}
102
if
(i
%
8
!=
7
) pTextFile[k]
=
pTextFile[k]
>>
1
;
103
}
104
105
cout
<<
"
解碼完畢
"
<<
endl;
106
107
ofstream textFile;
108
textFile.open(textFileName,ios::
out
|
ios::binary);
109
textFile.write((
char
*
)pTextFile,length);
110
textFile.close();
111
delete pTextFile;
112
}
113
BMP結構及源碼:
FTDib.zip
發表于 2008-03-15 13:29
foxtail
閱讀(5660)
評論(0)
編輯
收藏
引用
所屬分類:
基礎算法
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
初識LSB信息隱藏算法
【Knuth】算法的形式化定義
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
CALENDER
<
2008年10月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
公告
常用鏈接
我的隨筆
我的評論
我參與的隨筆
隨筆分類
(54)
C/C++程序設計(8)
(rss)
Linux學習筆記(3)
(rss)
UI設計與編程
(rss)
Windows程序設計(13)
(rss)
詞法分析器(6)
(rss)
匯編學習(9)
(rss)
基礎算法(2)
(rss)
練習題(5)
(rss)
生活與牢騷(7)
(rss)
數學知識(1)
(rss)
隨筆檔案
(53)
2013年5月 (1)
2009年6月 (1)
2009年1月 (1)
2008年11月 (2)
2008年10月 (2)
2008年9月 (1)
2008年8月 (4)
2008年7月 (5)
2008年6月 (2)
2008年5月 (1)
2008年4月 (6)
2008年3月 (1)
2008年1月 (5)
2007年11月 (2)
2007年10月 (5)
2007年9月 (10)
2007年8月 (4)
文章分類
軟件架構與設計模式
(rss)
相冊
Friend
illustrate
C++名庫
boost
loki-lib
sgi-stl
Friend
Jedimaster
kevinlynx
Negroove
陳梓瀚
陸璽玲
彭小虎
我的MSN博客
楊暉(騰訊)
GUI和設計方法
QT官方
QT中文
viksoe
WTL參考
Mathematics
GoodMath
Math
Problem
NOCOW
PKU
SGU
STL網站
STL
stlchina
STL擴展
工具
English
MSDN
TechNet
精品網站
codeguru
codeproject
GameDev
好多經典的文章值得好好研究的一個網站
Google Papers
ogre3d
regular expression
sourceforge
xkcd
非常C++
麻省理工學院開放課程
網絡協議分析
其他
EditControl
PieceTable的改進
美食天下
語言
最新隨筆
1.?安裝WPS
2.?如何修改mysql root密碼
3.?關于文字輸出的函數TabbedTextOut[整理]
4.?俄羅斯方塊V1.2
5.?俄羅斯方塊V1.0
6.?文件MD5計算工具
7.?ClipBoard.ASM文件分析
8.?STL學習摘要之序列式容器
9.?[zt]C運行庫概念
10.?如何自己寫Win32控件
11.?俄羅斯方塊
12.?推薦一個文本編輯器
13.?[Z]Visual C++開發工具與調試技巧整理
14.?Scintilla 主要類和控件的消息
15.?C++中的強制類型轉換[轉]
16.?typedef用法小結
17.?如何使用Scintilla編輯控件
18.?近期學習計劃
19.?C++之父表達式計算例子
20.?【疑惑】小波變換的一點瑕疵
21.?【轉】構造可配置詞法分析器【正文六&七】
22.?【轉】構造可配置詞法分析器【正文五】
23.?【轉】構造可配置詞法分析器【正文四】
24.?【轉】構造可配置詞法分析器【正文三】
25.?【轉】構造可配置詞法分析器【正文二】
26.?【轉】構造可配置詞法分析器【正文一】陳梓瀚同學著
27.?初識LSB信息隱藏算法
28.?windows程序設計(滾動條)
29.?windows編程(輸出文字)
30.?windows編程(窗口與消息)
31.?windows程序設計(開始)
32.?關于內存模式[節選]
33.?關系閉包運算
最新評論
1.?re: 俄羅斯方塊
評論內容較長,點擊標題查看
--ss
2.?re: #pragma once與 #ifndef的區別
不錯!
--sss
3.?re: #pragma once與 #ifndef的區別
寫得很詳細啊,學習了!
--愛的華爾茲
4.?re: 俄羅斯方塊V1.0
評論內容較長,點擊標題查看
--肖俊
5.?re: #pragma once與 #ifndef的區別
一起使用就都OK啦~~
--xavier
6.?re: typedef用法小結
最后看不太明白,不過還是很感謝你的總結!
--張
7.?re: typedef用法小結
想都不想的拷貝黨
明顯你是想說define的
--f
8.?re: #pragma once與 #ifndef的區別[未登錄]
好
--C++
9.?re: #pragma once與 #ifndef的區別
寫的非常好,頂~
--liuliu
10.?re: #pragma once與 #ifndef的區別
我覺得可以兩者一起使用。。。
--偽哥
11.?re: #pragma once與 #ifndef的區別
不錯,感謝樓主
--天之驕子'
12.?re: #pragma once與 #ifndef的區別
謝謝
--rufi
13.?re: typedef用法小結
第一種VC就通不過,后面不想看了。
--水中魚
14.?re: #pragma once與 #ifndef的區別
love you baby!
--romantic
15.?re: windows程序設計(滾動條)
圖示不可理解...
--dancingfish
16.?re: GCC編譯選項和GDB的使用
評論內容較長,點擊標題查看
--resume company
17.?re: GCC編譯選項和GDB的使用
評論內容較長,點擊標題查看
--custom thesis
18.?re: GCC編譯選項和GDB的使用
評論內容較長,點擊標題查看
--buy essay
19.?re: GCC編譯選項和GDB的使用
評論內容較長,點擊標題查看
--ClementsLeticia23
20.?re: 學習如何編程---摘自《如何成為一名黑客》
黑客怎么做 我不會啊
誰叫我啊
我盜別人的號
那個人告訴我啊
--高飛
21.?re: typedef用法小結[未登錄]
很亂
--Jacky
22.?re: #pragma once與 #ifndef的區別
不錯!
有個問題:“方式一由語言支持所以移植性好,方式二 可以避免名字沖突”
progma也是C99標準之內,應該不存在移植性不好的問題吧
--cgdeveloper
23.?re: typedef用法小結
恕我2b了,第二種是什么用法?
--溪流
24.?re: typedef用法小結
@JIAHONGXU
VC也編譯不通過。。樓主胡說
--sniffer
25.?re: 【疑惑】小波變換的一點瑕疵
想請教一下樓主這是怎么弄的啊,能否有樓主的聯系方式啊?我的QQ94432715
--diamond20
26.?re: 學習如何編程---摘自《如何成為一名黑客》
@王華
非常感謝
--亞辦法
27.?re: 學習如何編程---摘自《如何成為一名黑客》
繼續討論
--繼續討論
28.?re: typedef用法小結
貌似 #define pInt int*
--JIAHONGXU
29.?re: typedef用法小結
2. typedef pInt (int *)---有該種用法么?LINUX GCC上編譯不通過
--JIAHONGXU
30.?re: #pragma once與 #ifndef的區別
學習
--i
31.?re: 學習如何編程---摘自《如何成為一名黑客》
評論內容較長,點擊標題查看
--古典風格大
32.?re: 學習如何編程---摘自《如何成為一名黑客》
教我編程做軟件
--呂欣
33.?re: [Z]Visual C++開發工具與調試技巧整理
好!
--lwking
Powered By:
博客園
模板提供
:
滬江博客
91精品婷婷国产综合久久
|
亚洲欧美成人久久综合中文网
|
99久久婷婷国产综合亚洲
|
国内精品久久久久久99
|
国产精品欧美久久久久无广告
|
欧美性大战久久久久久
|
久久国产色av免费看
|
久久精品国产99国产精品澳门
|
久久精品国产一区
|
精品熟女少妇AV免费久久
|
欧美成人免费观看久久
|
久久电影网一区
|
无码人妻久久一区二区三区免费丨
|
色婷婷综合久久久久中文
|
久久99精品久久久久久野外
|
久久亚洲精品成人av无码网站
|
国内精品久久久久久中文字幕
|
欧美噜噜久久久XXX
|
香蕉aa三级久久毛片
|
久久精品国产一区二区
|
69久久夜色精品国产69
|
久久久久久国产精品无码下载
|
欧美午夜A∨大片久久
|
久久久午夜精品福利内容
|
久久精品人人做人人爽电影
|
亚洲精品无码久久久久久
|
国产精品99久久久久久宅男小说
|
99久久国产综合精品五月天喷水
|
久久国产精品无码HDAV
|
欧美大香线蕉线伊人久久
|
国内高清久久久久久
|
久久精品国产亚洲av麻豆图片
|
无码任你躁久久久久久久
|
久久久久久久国产免费看
|
国产高清国内精品福利99久久
|
欧美伊香蕉久久综合类网站
|
久久99毛片免费观看不卡
|
国产精品99久久不卡
|
久久丝袜精品中文字幕
|
一级做a爰片久久毛片免费陪
|
精品久久香蕉国产线看观看亚洲
|