隨筆: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
閱讀(5643)
評論(0)
編輯
收藏
引用
所屬分類:
基礎算法
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
初識LSB信息隱藏算法
【Knuth】算法的形式化定義
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
CALENDER
<
2008年3月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
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
公告
常用鏈接
我的隨筆
我的評論
我參與的隨筆
隨筆分類
(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: 【疑惑】小波變換的一點瑕疵
想請教一下樓主這是怎么弄的啊,能否有樓主的聯系方式?。课业模眩眩梗矗矗常玻罚保?
--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:
博客園
模板提供
:
滬江博客
久久精品国产欧美日韩
|
久久婷婷五月综合色奶水99啪
|
伊人久久大香线蕉av不卡
|
久久精品国产亚洲av瑜伽
|
中文字幕成人精品久久不卡
|
国产麻豆精品久久一二三
|
久久精品国产亚洲av麻豆色欲
|
久久久久亚洲AV无码网站
|
精品无码久久久久久尤物
|
国产69精品久久久久777
|
欧美黑人又粗又大久久久
|
www性久久久com
|
久久99热精品
|
久久精品国产亚洲沈樵
|
国内精品免费久久影院
|
久久久久国产精品麻豆AR影院
|
亚洲欧美日韩精品久久亚洲区
|
一本色道久久88综合日韩精品
|
婷婷五月深深久久精品
|
久久久久久午夜成人影院
|
欧美精品一区二区精品久久
|
国产精品久久久福利
|
精品亚洲综合久久中文字幕
|
国内精品久久久久久久影视麻豆
|
欧美久久久久久午夜精品
|
青青草原综合久久大伊人
|
91精品国产9l久久久久
|
久久久久99精品成人片
|
亚洲愉拍99热成人精品热久久
|
亚洲精品乱码久久久久久
|
国产精品久久精品
|
久久婷婷午色综合夜啪
|
97久久超碰国产精品旧版
|
久久综合五月丁香久久激情
|
欧美喷潮久久久XXXXx
|
韩国三级中文字幕hd久久精品
|
精品伊人久久久
|
九九久久99综合一区二区
|
亚洲精品国产第一综合99久久
|
A狠狠久久蜜臀婷色中文网
|
久久笫一福利免费导航
|