C語言對通訊資料報生成校驗碼的例子

2021-03-31 15:21:09 字數 914 閱讀 9885

在寫socket通訊程式的時候,為了校驗傳送的資料報的完整性,我一般會使用給資料報附加校驗碼

的方法,具體做法就是: 對要傳輸的資料從第乙個字元到最後乙個字元進行異或運算,最後回得到乙個異或

結果字元,把這個字元轉換為2進製字串!附加在資料報後面,收取資料的一方,收到資料後,先根據預先定義

的格式拆分資料報,對收到的資料進行異或運算, 然後把結果和傳送方的校驗碼比較,如果一致,說明資料傳輸

沒有問題。

//定義報文結構

typedef struct tradepackage

package;

/*功能描述:生成傳送報文的校驗碼(顯示為2進製的字元方式)

返回引數:checkcode為對input_buf串的每個字元做異或生成的校驗碼

*/void make_xor_checkcode(char * input_buf,char * checkcode)

b[8]='/0';

/*用異或的結果ret和x做位比較,做出ret的2進製校驗碼 end

*/strcpy(checkcode,b);  //返回生成的校驗碼}/*

功能描述:檢驗發來的資料報文的內容是否與校驗碼一致

返回引數:trade_package引數是由銀行方傳來的報文,用trade_package.p_check_code來

對其他的字串進行校驗。校驗成功返回1,否則返回0

*/int packagexor_parse(struct tradepackage trade_package)

Java生成CRC16資料校驗碼

crc即迴圈冗餘校驗碼 cyclic redundancy check 1 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸...

18位號碼身份證校驗碼的計算公式(c

標籤 c systemc 2009 09 11 23 07 1900人閱讀收藏 舉報 c 12 居民身份證的號碼是按照國家的標準編制的,由18位組成 前六位為行政區劃 第七至第十四位為出生日期碼,第15至17位為順序碼,第17位代表性別 奇數為男,偶數為女 第18位為校驗碼。作為尾號的校驗碼,是由號...

IP資料報的校驗和演算法C 版 原

為做偽ip,特地做了乙個ip包,用c 改寫ip頭的校驗和演算法。資料一 ip頭格式 版本號 4位 ip頭長度 4位 服務型別 8位 資料報長度 16位 標識段 16位 標誌段 16位 生存時間 8位 傳輸協議 8位 頭校驗和 16位 傳送位址 16位 目標位址 16位 選項 填充 資料二 ip 協議...