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