檢驗信息的完整性的方式如下:
最簡單的校驗:最簡單的校驗就是把原始信息和待比較信息直接進行比較,看是否完全一樣這種方法是最安全最準確的。同時也是效率最低的。例如:龍珠cpu在線調試工具bbug.exe。它和龍珠cpu間通訊時,bbug發送一個字節cpu返回收到的字節,bbug確認是剛才發送字節后才繼續發送下一個字節的。
奇偶校驗:在信息存儲和傳輸中,字節中額外增加一個比特位,用來檢驗錯誤。校驗位可以通過數據位異或計算出來。例如:單片機串口通訊有一模式就是8位數據通訊,另加第9位用于放校驗值。
BCC異或校驗法:很多基于串口的通訊都用這種既簡單又相當準確的方法。它就是把所有數據都和一個指定的初始值(通常是0)異或一次,最后的結果就是校驗值,通常把它附在通訊數據的最后一起發送出去。接收方收到數據后自己也計算一次異或和校驗值,如果和收到的校驗值一致就說明收到的數據是完整的。
LRC縱向冗余校驗:將ASCII碼幀中的頭和尾去掉,將串中的每個字節變成16進制相加,再講結果取反加1(補碼),就是VRC(vertical redundant code,垂直冗余碼)了。
CRC循環冗余校驗:它是利用除法及余數的原理來作錯誤偵測(Error Detecting)的。實際應用時,發送裝置計算出CRC值并隨數據一同發送給接收裝置,接收裝置對收到的數據重新計算CRC并與收到的CRC相比較,若兩個CRC值不同,則說明信息通訊出現錯誤。
MD5、SHA、MAC等摘要算法:摘要算法用于信息量比較大的場合。它通過對所有數據提取指紋信息以實現數據簽名、數據完整性校驗等功能,由于其不可逆性,有時候會被用做敏感信息的加密。數據摘要算法也被稱為哈希(Hash)算法、散列算法。在互聯網上進行大文件傳輸時,都要得用MD5算法產生一個與文件匹配的、存儲MD5值的文本文件(后綴名為.md5或.md5sum),這樣接收者在接收到文件后,就可以利用與 SFV類似的方法來檢查文件完整性,絕大多數大型軟件公司或開源組織都是以這種方式來校驗信息完整性,而且部分操作系統也使用此算法來對用戶密碼進行加密,另外,它也是目前計算機犯罪中數據取證的最常用算法。