一種基于數(shù)字水印的無(wú)線傳感器網(wǎng)絡(luò)敏感數(shù)據(jù)通信協(xié)議
while(CurrentUintDataN)
{
TheOUS.Write(CurrentUintData);//將當(dāng)前值加入輸出流
TheUintIndex++;
CurrentUintData=TheIUS.Read(TheUintIndex,1);
}
/** 如果當(dāng)前二進(jìn)制值為1,則將當(dāng)前無(wú)符號(hào)整數(shù)值的最后一位置為“1”,并將該值加入到輸出流中;否則,將最后一位置為“0”,并將該值加入到輸出流中。 **/
if(CurrentBitData==1)
TheOUS.Write(CurrentUintData|0x0001);
else TheOUS.Write(CurrentUintData0xfff0);
TheBitIndex++;
TheUintIndex++;
}
}
敏感數(shù)據(jù)的提取過(guò)程與嵌入過(guò)程相反,將接收到的含有敏感數(shù)據(jù)的16位無(wú)符號(hào)整數(shù)流命名為輸入整數(shù)流,將提取出的二進(jìn)制敏感數(shù)據(jù)流命名為輸出二進(jìn)制流,將輸出的16位傳感數(shù)據(jù)流命名為輸出整數(shù)流。則敏感數(shù)據(jù)提取過(guò)程描述如下:首先將該值添加到輸出無(wú)符號(hào)整數(shù)流中,然后檢測(cè)輸入整數(shù)流中當(dāng)前位置的數(shù)據(jù)值,如果該值大于或等于閥值且最低位為“1”,則將“1”添加到二進(jìn)制輸出流中;否則,將“0”添加到二進(jìn)制輸出流中;如果該值小于閥值,則不往二進(jìn)制輸出流添加數(shù)據(jù)。最后,將輸出二進(jìn)制流轉(zhuǎn)化為敏感數(shù)據(jù),將輸出無(wú)符號(hào)整數(shù)流轉(zhuǎn)化為傳感數(shù)據(jù)。
為進(jìn)一步提升敏感數(shù)據(jù)傳輸?shù)陌踩?jí)別,還可以在預(yù)處理時(shí)對(duì)敏感數(shù)據(jù)加校驗(yàn)、加簽名、加密等。
2 實(shí)際驗(yàn)證
無(wú)線傳感器網(wǎng)絡(luò)在某軍事化應(yīng)用中,多個(gè)節(jié)點(diǎn)被布設(shè)于一個(gè)生疏地域內(nèi),實(shí)時(shí)采集該地域的溫度、濕度、光照等環(huán)境信息。為檢測(cè)各個(gè)節(jié)點(diǎn)未被敵方捕獲而傳回虛假信息,各節(jié)點(diǎn)將不定時(shí)地傳回自己的“識(shí)別碼”,以證明自己的身份?!白R(shí)別碼”由節(jié)點(diǎn)ID、當(dāng)前時(shí)間、基站回復(fù)碼等信息實(shí)時(shí)運(yùn)算生成,為一串數(shù)字。
在該應(yīng)用中,采用了本文所述方法傳輸“識(shí)別碼”。具體做法是:在“光照”傳感數(shù)據(jù)中,當(dāng)數(shù)據(jù)值大于256(0x0100)時(shí),嵌入“識(shí)別碼”。如圖2所示,“光照”數(shù)據(jù)的值通常白天在600以上,均大于閥值,方便嵌入水印,同時(shí),嵌入水印后,對(duì)原值影響較小。本文引用地址:http://www.ex-cimer.com/article/163209.htm
評(píng)論