當前位置:首頁 » 操作系統 » 源碼校驗

源碼校驗

發布時間: 2022-10-04 15:42:43

『壹』 求一個CRC校驗C++源代碼。題目:發送數據為1101011011,生成的多項式為P(X)=X4+X+1(X4為X的4次方),

下面的代碼輸入為原數據和多項式對就的二進制碼,輸出為產生的校驗碼。

如原數據是1101011011,多項式是X^4+X+1(即10011)。產生的校驗碼為1110。

輸入110101101110011

輸出1110

#include<iostream>
#include<cstring>
#include<iomanip>
usingnamespacestd;

#defineWORDSIZE255

intgetNum(chara[],intn);
voidshowNum(intr,intn);

intmain(intargc,char*argv[])
{
cout<<"pleaseinputXandP:"<<endl;
intx,p,lenA,lenP;
chara[WORDSIZE];
memset(a,'',WORDSIZE);
cin>>a;
lenA=strlen(a);
x=getNum(a,WORDSIZE);
memset(a,'',WORDSIZE);
cin>>a;
lenP=strlen(a);
p=getNum(a,WORDSIZE);

x<<=lenP-1;
intresult=0,i;
for(i=lenA-1;i>=0;i--){
if(x&(1<<(i+lenP-1))){
result=result*2+1;
x^=(p<<i);

}else{
result=result*2;
}
}
showNum(x,lenP-1);

return0;
}

intgetNum(chara[],intn)
{
intk=0;
inti;
for(i=0;i<n&&a[i]!='';i++){
k=k*2+a[i]-'0';
}
returnk;
}

voidshowNum(intr,intn)
{
inti;
for(i=n-1;i>=0;i--){
if(r&(1<<i)){
cout<<1;
}else{
cout<<0;
}
}
cout<<endl;
}

這是以前自己偷懶做計算機網路CRC題目時寫的程序,希望對你有用。

『貳』 易語言打開源碼的時候顯示 「文件中的重要數據丟失[程序資源段]校驗失敗!」那位老師能指導一下

你好!這種情況應該是存源碼的時候沒存好,導致數據丟失,你去網路搜一下這個"易源代碼修復程序 支持加密版",看看可不行。希望能夠幫到你。

『叄』 linux用源碼安裝時查看校驗和怎麼知道官方的

一、平時下載linux的源碼包,都是通過搜索,然後找到相關的下載網站進行下載。或者搜索網站進行下載,而且還要遍歷查找安全的網站下載,這樣有些浪費時間與精力.
二、下面舉例介紹一種簡單的方法下載軟體的源碼安裝包
使用 yum info XXX 的命令得到軟體的地址,然後復制即可瀏覽,這樣即安全也省時間去查找,更加簡單,如下圖所示
使用yum info 命令進行查看軟體的信息,里邊包含了軟體的網站,可以很方便得知源碼下載地址了.

三、總結
無論使用哪一種方法來查詢軟體的源碼包,但還是要驗證一下它的安全性,避免出現故障,最好就是到軟體的官方網站進行下載。

『肆』 100分求CRC循環冗餘自校驗c++源碼

您所需的源碼我已經發到你的qq郵箱中了,請你注意查收!我的qq是746060864,希望我的被採納

『伍』 誰有VB CRC16校驗源碼

Public Function UnsignInt(ByRef Num As Variant) As Boolean
Num = Num And &HFFFF&
End Function

'8005
Public Function CRC168005(ptr() As Byte) As String
Dim i As Integer, J As Integer
Dim Index As Integer
Dim crc As Long

crc = 0
Index = 0

For J = 0 To UBound(ptr)
i = &H80
Do While (i > 0)
UnsignInt crc

If ((crc And &H8000&) <> 0) Then

crc = crc * 2

UnsignInt crc
crc = crc Xor &H8005&

Else
crc = crc * 2
'crc = UnsignedAdd(crc, crc)

End If

If ((ptr(Index) And i) <> 0) Then
UnsignInt crc
crc = crc Xor &H8005& '關鍵點 結尾&符號
End If

i = i / 2
Loop

Index = Index + 1

Next

CRC168005 = Hex(crc)

End Function

'A001
Public Function CRC16(data() As Byte) As String
Dim CRC16Lo As Byte, CRC16Hi As Byte 'CRC寄存器
Dim CL As Byte, CH As Byte '多項式碼&HA001
Dim SaveHi As Byte, SaveLo As Byte
Dim i As Integer
Dim flag As Integer
CRC16Lo = &HFF
CRC16Hi = &HFF
CL = &H1
CH = &HA0
For i = 0 To UBound(data)
CRC16Lo = CRC16Lo Xor data(i) '每一個數據與CRC寄存器進行異或
For flag = 0 To 7
SaveHi = CRC16Hi
SaveLo = CRC16Lo
CRC16Hi = CRC16Hi \ 2 '高位右移一位
CRC16Lo = CRC16Lo \ 2 '低位右移一位
If ((SaveHi And &H1) = &H1) Then 'VB下的CRC校驗程序高位位元組最後一位為1
CRC16Lo = CRC16Lo Or &H80 '則低位位元組右移後前面補1
End If '否則自動補0
If ((SaveLo And &H1) = &H1) Then 'VB下的CRC校驗程序LSB為1,則與多項式碼進行異或
CRC16Hi = CRC16Hi Xor CH
CRC16Lo = CRC16Lo Xor CL
End If
Next flag
Next i
Dim ReturnData(2) As Byte
ReturnData(0) = CRC16Hi 'CRC高位
ReturnData(1) = CRC16Lo 'CRC低位
CRC16 = Bit(Hex(ReturnData(0))) & Bit(Hex(ReturnData(1)))
End Function

『陸』 Android socket源碼解析(三)socket的connect源碼解析

上一篇文章著重的聊了socket服務端的bind,listen,accpet的邏輯。本文來著重聊聊connect都做了什麼?

如果遇到什麼問題,可以來本文 https://www.jianshu.com/p/da6089fdcfe1 下討論

當服務端一切都准備好了。客戶端就會嘗試的通過 connect 系統調用,嘗試的和服務端建立遠程連接。

首先校驗當前socket中是否有正確的目標地址。然後獲取IP地址和埠調用 connectToAddress 。

在這個方法中,能看到有一個 NetHooks 跟蹤socket的調用,也能看到 BlockGuard 跟蹤了socket的connect調用。因此可以hook這兩個地方跟蹤socket,不過很少用就是了。

核心方法是 socketConnect 方法,這個方法就是調用 IoBridge.connect 方法。同理也會調用到jni中。

能看到也是調用了 connect 系統調用。

文件:/ net / ipv4 / af_inet.c

在這個方法中做的事情如下:

注意 sk_prot 所指向的方法是, tcp_prot 中 connect 所指向的方法,也就是指 tcp_v4_connect .

文件:/ net / ipv4 / tcp_ipv4.c

本質上核心任務有三件:

想要能夠理解下文內容,先要明白什麼是路由表。

路由表分為兩大類:

每個路由器都有一個路由表(RIB)和轉發表 (fib表),路由表用於決策路由,轉發表決策轉發分組。下文會接觸到這兩種表。

這兩個表有什麼區別呢?

網上雖然給了如下的定義:

但實際上在Linux 3.8.1中並沒有明確的區分。整個路由相關的邏輯都是使用了fib轉發表承擔的。

先來看看幾個和FIB轉發表相關的核心結構體:

熟悉Linux命令朋友一定就能認出這裡面大部分的欄位都可以通過route命令查找到。

命令執行結果如下:

在這route命令結果的欄位實際上都對應上了結構體中的欄位含義:

知道路由表的的內容後。再來FIB轉發表的內容。實際上從下面的源碼其實可以得知,路由表的獲取,實際上是先從fib轉發表的路由字典樹獲取到後在同感加工獲得路由表對象。

轉發表的內容就更加簡單

還記得在之前總結的ip地址的結構嗎?

需要進行一次tcp的通信,意味著需要把ip報文准備好。因此需要決定源ip地址和目標IP地址。目標ip地址在之前通過netd查詢到了,此時需要得到本地發送的源ip地址。

然而在實際情況下,往往是面對如下這么情況:公網一個對外的ip地址,而內網會被映射成多個不同內網的ip地址。而這個過程就是通過DDNS動態的在內存中進行更新。

因此 ip_route_connect 實際上就是選擇一個緩存好的,通過DDNS設置好的內網ip地址並找到作為結果返回,將會在之後發送包的時候填入這些存在結果信息。而查詢內網ip地址的過程,可以成為RTNetLink。

在Linux中有一個常用的命令 ifconfig 也可以實現類似增加一個內網ip地址的功能:

比如說為網卡eth0增加一個IPV6的地址。而這個過程實際上就是調用了devinet內核模塊設定好的添加新ip地址方式,並在回調中把該ip地址刷新到內存中。

注意 devinet 和 RTNetLink 嚴格來說不是一個存在同一個模塊。雖然都是使用 rtnl_register 注冊方法到rtnl模塊中:

文件:/ net / ipv4 / devinet.c

文件:/ net / ipv4 / route.c

實際上整個route模塊,是跟著ipv4 內核模塊一起初始化好的。能看到其中就根據不同的rtnl操作符號注冊了對應不同的方法。

整個DDNS的工作流程大體如下:

當然,在tcp三次握手執行之前,需要得到當前的源地址,那麼就需要通過rtnl進行查詢內存中分配的ip。

文件:/ include / net / route.h

這個方法核心就是 __ip_route_output_key .當目的地址或者源地址有其一為空,則會調用 __ip_route_output_key 填充ip地址。目的地址為空說明可能是在回環鏈路中通信,如果源地址為空,那個說明可能往目的地址通信需要填充本地被DDNS分配好的內網地址。

在這個方法中核心還是調用了 flowi4_init_output 進行flowi4結構體的初始化。

文件:/ include / net / flow.h

能看到這個過程把數據中的源地址,目的地址,源地址埠和目的地址埠,協議類型等數據給記錄下來,之後內網ip地址的查詢與更新就會頻繁的和這個結構體進行交互。

能看到實際上 flowi4 是一個用於承載數據的臨時結構體,包含了本次路由操作需要的數據。

執行的事務如下:

想要弄清楚ip路由表的核心邏輯,必須明白路由表的幾個核心的數據結構。當然網上搜索到的和本文很可能大為不同。本文是基於LInux 內核3.1.8.之後的設計幾乎都沿用這一套。

而內核將路由表進行大規模的重新設計,很大一部分的原因是網路環境日益龐大且復雜。需要全新的方式進行優化管理系統中的路由表。

下面是fib_table 路由表所涉及的數據結構:

依次從最外層的結構體介紹:

能看到路由表的存儲實際上通過字典樹的數據結構壓縮實現的。但是和常見的字典樹有點區別,這種特殊的字典樹稱為LC-trie 快速路由查找演算法

這一篇文章對於快速路由查找演算法的理解寫的很不錯: https://blog.csdn.net/dog250/article/details/6596046

首先理解字典樹:字典樹簡單的來說,就是把一串數據化為二進制格式,根據左0,右1的方式構成的。

如圖下所示:

這個過程用圖來展示,就是沿著字典樹路徑不斷向下讀,比如依次讀取abd節點就能得到00這個數字。依次讀取abeh就能得到010這個數字。

說到底這種方式只是存儲數據的一種方式。而使用數的好處就能很輕易的找到公共前綴,在字典樹中找到公共最大子樹,也就找到了公共前綴。

而LC-trie 則是在這之上做了壓縮優化處理,想要理解這個演算法,必須要明白在 tnode 中存在兩個十分核心的數據:

這負責什麼事情呢?下面就簡單說說整個lc-trie的演算法就能明白了。

當然先來看看方法 __ip_dev_find 是如何查找

文件:/ net / ipv4 / fib_trie.c

整個方法就是通過 tkey_extract_bits 生成tnode中對應的葉子節點所在index,從而通過 tnode_get_child_rcu 拿到tnode節點中index所對應的數組中獲取葉下一級別的tnode或者葉子結點。

其中查找index最為核心方法如上,這個過程,先通過key左移動pos個位,再向右邊移動(32 - bits)演算法找到對應index。

在這里能對路由壓縮演算法有一定的理解即可,本文重點不在這里。當從路由樹中找到了結果就返回 fib_result 結構體。

查詢的結果最為核心的就是 fib_table 路由表,存儲了真正的路由轉發信息

文件:/ net / ipv4 / route.c

這個方法做的事情很簡單,本質上就是想要找到這個路由的下一跳是哪裡?

在這裡面有一個核心的結構體名為 fib_nh_exception 。這個是指fib表中去往目的地址情況下最理想的下一跳的地址。

而這個結構體在上一個方法通過 find_exception 獲得.遍歷從 fib_result 獲取到 fib_nh 結構體中的 nh_exceptions 鏈表。從這鏈表中找到一模一樣的目的地址並返回得到的。

文件:/ net / ipv4 / tcp_output.c

『柒』 急需crc16校驗碼源代碼

http://blog.csdn.net/lino168/article/details/1860758
http://blog.csdn.net/hnbcjzj/article/details/1929040
在CSDN上搜到的

『捌』 求crc32校驗C#源碼,能用的哦!跪謝

我有CRC16校驗的C#代碼:

CRC循環冗餘錯誤校驗計算方法&&代碼

CRC—16(循環冗餘錯誤校驗)生成CRC—16校驗位元組的步驟如下:
(1)裝入一個16位寄存器,所有數位均為1。
(2)該16位寄存器的高位位元組與開始8位位元組進行「異或」運算。運算結果放入這個16位寄存器。
(3)把這個16位寄存器向右移1位。
(4a)若向右(標記位)移出的數位是1,則生成多項式1010000000000001和這個寄存器進行「異或」運算。
(4b)若向右移出的數位是0,則返回(3)。
(5)重復(3)和(4),直至移出8位。
(6)另外8位與該16位寄存器進行「異或」運算。
(7)重復(3)—(6),直至該報文所有位元組均與16位寄存器進行「異或」運算,並移位8次。
(8)這個16位寄存器的內容即2位元組CRC錯誤校驗

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CommPort
{
public class CRC16
{
public CRC16()
{
}
//校驗crc16
public static bool check(byte[] buff, int index, int len)
{ //buff是待校驗數組,index為起始索引,len為校驗長度
//buff是待校驗數組,index為起始索引,len為校驗長度
uint i, j;
byte h, l;
byte c, d;
h = 0x55;
l = 0xaa;
for (i = (uint)index; i < index + len; i++)
{
h = (byte)(buff[i] ^ h);
for (j = 0; j < 8; j++)
{
c = (byte)(l & 0x80);
l <<= 1;
d = (byte)(h & 0x80);
h <<= 1;
if (c != 0)
h |= 0x01;
if (d != 0)
{
//
h = (byte)(h ^ 0x10);
l = (byte)(l ^ 0x21);
}
}
}
if ((h == 0) && (l == 0))
return true;
else
return false;
}
//計算一個byte數組中指定位置的crc16
public static byte[] cal(byte[] buff, int index, int len)
{
//buff是待校驗數組,index為起始索引,len為校驗長度
uint i, j;
byte h, l;
byte c, d;
h = 0x55;
l = 0xaa;
for (i = (uint)index; i < index + len; i++)
{
h = (byte)(buff[i] ^ h);
for (j = 0; j < 8; j++)
{
c = (byte)(l & 0x80);
l <<= 1;
d = (byte)(h & 0x80);
h <<= 1;
if (c != 0)
h |= 0x01;
if (d != 0)
{
//
h = (byte)(h ^ 0x10);
l = (byte)(l ^ 0x21);
}
}
}
byte[] resu = new byte[2];
resu[0] = (byte)h;
resu[1] = (byte)l;
return resu;
}
}
}

『玖』 u盤數據傳輸源碼中有校驗嗎

沒有的,樓主

熱點內容
什麼手機安卓系統80 發布:2024-04-20 21:37:29 瀏覽:379
浙江萬里的伺服器地址 發布:2024-04-20 21:16:59 瀏覽:407
ndklinux下載 發布:2024-04-20 21:05:22 瀏覽:566
王者榮耀解壓資源包97 發布:2024-04-20 20:46:10 瀏覽:397
蘋果手機沒有密碼怎麼打開 發布:2024-04-20 20:45:25 瀏覽:93
如何用濃硝酸配置百分之2的硝酸 發布:2024-04-20 20:44:39 瀏覽:797
微信商城java源碼下載 發布:2024-04-20 20:27:35 瀏覽:121
用友軟體sql 發布:2024-04-20 20:10:01 瀏覽:933
python倒著循環 發布:2024-04-20 20:09:52 瀏覽:759
雲伺服器遠程電腦版 發布:2024-04-20 20:09:12 瀏覽:259