![信息安全基礎(chǔ)實(shí)習(xí)報(bào)告_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/27/156b5560-6cd3-4155-a5e4-6818d1ed4b15/156b5560-6cd3-4155-a5e4-6818d1ed4b151.gif)
![信息安全基礎(chǔ)實(shí)習(xí)報(bào)告_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/27/156b5560-6cd3-4155-a5e4-6818d1ed4b15/156b5560-6cd3-4155-a5e4-6818d1ed4b152.gif)
![信息安全基礎(chǔ)實(shí)習(xí)報(bào)告_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/27/156b5560-6cd3-4155-a5e4-6818d1ed4b15/156b5560-6cd3-4155-a5e4-6818d1ed4b153.gif)
![信息安全基礎(chǔ)實(shí)習(xí)報(bào)告_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/27/156b5560-6cd3-4155-a5e4-6818d1ed4b15/156b5560-6cd3-4155-a5e4-6818d1ed4b154.gif)
![信息安全基礎(chǔ)實(shí)習(xí)報(bào)告_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/27/156b5560-6cd3-4155-a5e4-6818d1ed4b15/156b5560-6cd3-4155-a5e4-6818d1ed4b155.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、信息安全基礎(chǔ)實(shí)習(xí)報(bào)告姓 名: 學(xué) 號(hào): 班 級(jí): 指導(dǎo)老師: 1.問(wèn)題描述通信系統(tǒng)模型反映了各種通信系統(tǒng)的共同特性,對(duì)通信系統(tǒng)模型的研究有助于找出信息傳輸過(guò)程中的共同規(guī)律,以提高信息傳輸?shù)目煽啃浴⒂行?、保密性和認(rèn)證性。本課題的任務(wù)是針對(duì)文本文件(txt文件)或圖像文件(bmp文件)對(duì)信源編(譯)碼,信道編(譯)碼部分編程實(shí)現(xiàn),并分析實(shí)驗(yàn)數(shù)據(jù)。2.需求分析該通信系統(tǒng)模型主要有四個(gè)模塊:信源編碼(Huffman編碼)、信道編碼(線性分組碼)、信道解碼、信源解碼。編碼對(duì)象:圖像(test1.bmp)信源編碼算法: 哈弗曼編碼信源編碼結(jié)果:文本(2.txt)信道編碼算法: 線性分組碼信道編碼結(jié)果:文
2、本(3.txt)統(tǒng)計(jì)壓縮率統(tǒng)計(jì)傳輸率信源譯碼:文本5.txt)解碼結(jié)果:圖像(test2.bmp)信道譯碼結(jié)果:文本(4.txt)讀像素:文本(1.txt)根據(jù)實(shí)驗(yàn)要求,需要讀寫文件,本文選擇的是讀取圖像文件,涉及到讀取圖像文件的知識(shí)。3.算法分析3.1Huffman編碼Huffman算法是一種基于統(tǒng)計(jì)的壓縮方法。它的本質(zhì)就是對(duì)文本文件中的字符進(jìn)行重新編碼,對(duì)于使用頻率越高的字符,其編碼也越短。但是任何2個(gè)字符的編碼,是不能出現(xiàn)向前包含的。也就是說(shuō)字符A的編碼的前段,不可能為字符B的編碼。經(jīng)過(guò)編碼后的文本文件,主要包含2個(gè)部分:Huffman碼表部分和壓縮內(nèi)容部分。解壓縮的時(shí)候,先把Huffm
3、an碼表取出來(lái),然后對(duì)壓縮內(nèi)容部分各個(gè)字符進(jìn)行逐一解碼,形成源文件。編碼過(guò)程如下(1) 將信源符號(hào)按概率遞減順序排列; (2) 把兩個(gè)最小的概率加起來(lái), 作為新符號(hào)的概率; (3) 重復(fù)步(1) 、(2) 直到概率和達(dá)到1為止;(4) 在每次合并消息時(shí),將被合并的消息賦以1和0或0和1;(5) 尋找從每個(gè)信源符號(hào)到概率為1處的路徑,記錄下路徑上的1和0;(6) 對(duì)每個(gè)符號(hào)寫出1、0序列(從碼數(shù)的根到終節(jié)點(diǎn))。哈夫曼譯碼過(guò)程與編碼過(guò)程相反,譯碼過(guò)程就是分解電文中字符串的過(guò)程,具體步驟如下:首先輸入要一點(diǎn)問(wèn)的二進(jìn)制編碼,然后從哈夫曼樹(shù)的根結(jié)點(diǎn)出發(fā),對(duì)于電文的二進(jìn)制編碼,按照二進(jìn)制位串中的0和1確定
4、是進(jìn)入左分支還是右分支:若編碼為0,則進(jìn)入結(jié)點(diǎn)的左孩子,否則進(jìn)入結(jié)點(diǎn)的右孩子,一旦到達(dá)葉結(jié)點(diǎn),就譯出該葉子結(jié)點(diǎn)所代表字符。3.2線性分組碼(7,3)碼線性分組碼是一類奇偶校驗(yàn)碼,它可以由(n,k)形式表示,編碼器將一個(gè)k比特信息分組(信息矢量)轉(zhuǎn)變?yōu)橐粋€(gè)更長(zhǎng)的由給定元素符號(hào)集組成的n比特編碼分組,當(dāng)這個(gè)符號(hào)集包含兩個(gè)元素(0和1),與二進(jìn)制相對(duì),稱為二進(jìn)制編碼。分組碼是對(duì)每段k位長(zhǎng)的信息組,以一定規(guī)則增加r=n-k個(gè)檢驗(yàn)元,組成長(zhǎng)為n的序列:(Cn-1,Cn-2,C1,C0),稱這個(gè)序列為碼字。在二進(jìn)制情況下,信息組總共有k2個(gè),因此通過(guò)編碼器后,相應(yīng)的碼字也有k2個(gè),稱這k2個(gè)碼字集合為(n
5、,k)分組碼。n長(zhǎng)序列的可能排列總共有n2種。稱被選取的k2個(gè)n重為許用碼組,其余kn22-個(gè)為禁用碼組,稱R=k/n為碼率。那么對(duì)于(7,3)碼即為用7位長(zhǎng)的序列表示3位信息碼,7位長(zhǎng)序列的可能排列總共有128個(gè)。許用碼組有8個(gè),其余128-8=120個(gè)禁用碼組,碼率為R=3/7=42.86%。對(duì)于長(zhǎng)度為n的二進(jìn)制分組碼,可以表示成(n,k),通常用于前向糾錯(cuò)。在分組碼中,監(jiān)督位加到信息位之后,形成新碼,在編碼中,k個(gè)信息位,被編為n位長(zhǎng)度,(n-k)個(gè)監(jiān)督碼的作用是實(shí)現(xiàn)檢錯(cuò)和糾錯(cuò)。n 編碼原理(1)根據(jù)給定的生成矩陣G,求得監(jiān)督碼與信息碼之間呈線性關(guān)系即編碼方程。 (2)輸入信息碼,代入上
6、述編碼方程中,得到各監(jiān)督碼。 (3)監(jiān)督碼附帶在信息碼之后,一起輸出,即得到編碼結(jié)果。已知線性分組碼的生成矩陣 1 0 0 1 1 1 0 G = 0 1 0 0 1 1 1 0 0 1 1 1 0 1因?yàn)?C6C5C4G=C6C5C4C3C2C1C0即 1 0 0 1 1 1 0 C6C5C4 0 1 0 0 1 1 1 = C6C5C4C3C2C1C0 0 0 1 1 1 0 1所以由上式可以得到編碼方程組C6 = C6C5 = C5C4 = C4=+=+ =+=+表1 信息碼、監(jiān)督碼、許用碼對(duì)照表信息組監(jiān)督碼碼字00000000000000001110100111010100111010
7、01110111010011101010011101001110101001110100111101001110100111101001110100n 譯碼原理(1)根據(jù)生成矩陣計(jì)算出監(jiān)督矩陣H,由H計(jì)算出伴隨式S。 (2)如果S=0,0,0,0,R1無(wú)錯(cuò)。 (3)如果S與H的轉(zhuǎn)置矩陣的某一行相等,則有一個(gè)錯(cuò)誤,找到相應(yīng)的錯(cuò)誤圖樣E,則正確的接收到的碼字R2=R1+E(二進(jìn)制異或)。 (4)譯出的碼為R2的前3位。 (5)如果S不等于H轉(zhuǎn)置的任意一行,則有兩個(gè)或多個(gè)錯(cuò)誤,不能得到正確的譯碼結(jié)果。已知線性分組碼的生成矩陣 1 0 0 1 1 1 0 G = 0 1 0 0 1 1 1 0 0 1
8、 1 1 0 1 G=IkP (3)其中Ik是k階單位矩陣,這里k=3 1 1 1 0 G = 0 1 1 1 (4) 1 1 0 1 監(jiān)督矩陣 H=QIr (5) 1 0 0 00 1 0 0 Ir = 0 0 1 0 (6) 0 0 0 1因?yàn)?P=QT (7)所以由(4)得 1 0 11 1 1 Q = 1 1 0 (8) 0 1 1因此由(5)(6)(8)得監(jiān)督矩陣 1 0 1 1 0 0 01 1 1 0 1 0 0 Q = 1 1 0 0 0 1 0 (9) 0 1 1 0 0 0 14.算法實(shí)現(xiàn)4.1圖片處理n 定義結(jié)構(gòu)體/位圖文件頭定義;/其中不包含文件類型信息(由于結(jié)構(gòu)體的內(nèi)
9、存結(jié)構(gòu)決定,/要是加了的話將不能正確讀取文件信息)typedef struct tagBITMAPFILEHEADER/WORD bfType; /文件類型,必須是0x424D,即字符“BM”DWORD bfSize; /文件大小WORD bfReserved1; /保留字WORD bfReserved2; /保留字DWORD bfOffBits; /從文件頭到實(shí)際位圖數(shù)據(jù)的偏移字節(jié)數(shù)BITMAPFILEHEADER;typedef struct tagBITMAPINFOHEADERDWORD biSize; /信息頭大小LONG biWidth; /圖像寬度LONG biHeight; /
10、圖像高度WORD biPlanes; /位平面數(shù),必須為1WORD biBitCount; /每像素位數(shù)DWORD biCompression; /壓縮類型DWORD biSizeImage; /壓縮圖像大小字節(jié)數(shù)LONG biXPelsPerMeter; /水平分辨率LONG biYPelsPerMeter; /垂直分辨率DWORD biClrUsed; /位圖實(shí)際用到的色彩數(shù)DWORD biClrImportant; /本位圖中重要的色彩數(shù)BITMAPINFOHEADER; /位圖信息頭定義typedef struct tagRGBQUADBYTE rgbBlue; /該顏色的藍(lán)色分量BY
11、TE rgbGreen; /該顏色的綠色分量BYTE rgbRed; /該顏色的紅色分量BYTE rgbReserved; /保留值RGBQUAD; /調(diào)色板定義typedef struct tagIMAGEDATA /像素信息BYTE blue;/BYTE green;/BYTE red;IMAGEDATA;n 像素保存bool BMP:readOfBMP()cout t正在讀取原文件信息,請(qǐng)稍后.n endl;FILE *fpi;fpi = fopen(G:學(xué)習(xí)資料信息安全基礎(chǔ)實(shí)習(xí)ConsoleApplication1ConsoleApplication1test1.BMP, rb);if
12、 (fpi = NULL)cout t無(wú)法打開(kāi)文件1!n endl;return false;/判斷是否是bmp格式文件WORD bfType;fread(&bfType, 1, sizeof(WORD), fpi);if (bfType != 0x4d42)cout t不是bmp格式的圖片!n endl;return false;/讀取bmp文件的文件頭和信息頭fread(&strHead, 1, sizeof(tagBITMAPFILEHEADER), fpi);fread(&strInfo, 1, sizeof(tagBITMAPINFOHEADER), fpi);/讀取調(diào)色板for (
13、unsigned int nCounti = 0; nCounti strInfo.biClrUsed; nCounti+)fread(char *)&(strPlanCounti.rgbBlue), 1, sizeof(BYTE), fpi);fread(char *)&(strPlanCounti.rgbGreen), 1, sizeof(BYTE), fpi);fread(char *)&(strPlanCounti.rgbRed), 1, sizeof(BYTE), fpi);fread(char *)&(strPlanCounti.rgbReserved), 1, sizeof(BY
14、TE), fpi);strInfo.biWidth = (strInfo.biWidth * sizeof(IMAGEDATA)+3) / 4 * 4;long width = strInfo.biWidth;long height = strInfo.biHeight;/width = ( width * sizeof(IMAGEDATA) + 3) / 4 * 4;/申請(qǐng)并初始化存儲(chǔ)像素imageDataPtr = new IMAGEDATAwidth * height;for (int i = 0; i height; +i)for (int j = 0; j width; +j)(*(
15、imageDataPtr + i * width + j).blue = 0;/(*(imageDataPtr + i * width + j).green = 0;/(*(imageDataPtr + i * width + j).red = 0;fread(imageDataPtr, sizeof(struct tagIMAGEDATA) * width, height, fpi);fclose(fpi);cout t原文件讀取完畢!n endl;return true;4.2 Huffman解壓縮n Huffman樹(shù)構(gòu)造構(gòu)造哈夫曼樹(shù)非常簡(jiǎn)單,將所有的節(jié)點(diǎn)放到一個(gè)隊(duì)列中,用一個(gè)節(jié)點(diǎn)替換兩個(gè)
16、頻率最低的節(jié)點(diǎn),新節(jié)點(diǎn)的頻率就是這兩個(gè)節(jié)點(diǎn)的頻率之和。這樣,新節(jié)點(diǎn)就是兩個(gè)被替換節(jié)點(diǎn)的父節(jié)點(diǎn)了。如此循環(huán),直到隊(duì)列中只剩一個(gè)節(jié)點(diǎn)(樹(shù)根)。void Haffman(int weight, HaffNode haffTree)int i, j, m1, m2, x1, x2;for (i = 0; i2 * MaxN - 1; i+)if (iMaxN)haffTreei.letter = (char)i;haffTreei.weight = weighti;haffTreei.flag = 0;haffTreei.parent = -1;haffTreei.leftChild = -1;haf
17、fTreei.rightChild = -1;for (i = 0; iMaxN - 1; i+)m1 = m2 = MaxValue;x1 = x2 = 0;for (j = 0; jMaxN + i; j+)if (haffTreej.weightm1&haffTreej.flag = 0)m2 = m1;x2 = x1;m1 = haffTreej.weight;x1 = j;else if (haffTreej.weightm2&haffTreej.flag = 0)m2 = haffTreej.weight;x2 = j;haffTreex1.parent = MaxN + i;ha
18、ffTreex2.parent = MaxN + i;haffTreex1.flag = 1;haffTreex2.flag = 1;haffTreeMaxN + i.weight = haffTreex1.weight + haffTreex2.weight;haffTreeMaxN + i.leftChild = x1;haffTreeMaxN + i.rightChild = x2;n Huffman編碼解壓縮比構(gòu)造哈夫曼樹(shù)要簡(jiǎn)單的多,將輸入緩沖區(qū)中的每個(gè)編碼用對(duì)應(yīng)的ASCII碼逐個(gè)替換就可以了。只要記住,這里的輸入緩沖區(qū)是一個(gè)包含每個(gè)ASCII值的編碼的位流。因此,為了用ASCII值替
19、換編碼,我們必須用位流搜索哈夫曼樹(shù),直到發(fā)現(xiàn)一個(gè)葉節(jié)點(diǎn),然后將它的ASCII值添加到輸出緩沖區(qū)中:void HaffmanEncode(HaffNode haffTree, char codeMaxNMaxN)/編碼結(jié)果保存在2.txt文檔中char hcodeMaxN;int start, i, child, parent;for (i = 0; iMaxN; i+)start = MaxN - 1;hcode-start = 0;child = i;parent = haffTreechild.parent;while (parent != -1)if (haffTreeparent.le
20、ftChild = child)hcode-start = 0;else hcode-start = 1;child = parent;parent = haffTreechild.parent;strcpy(codei, &hcodestart);n Huffman譯碼void HaffmanDecode(HaffNode haffTree)/譯碼結(jié)果保存在5.txt文檔中FILE *fp1, *fp2;int i = 2 * MaxN - 2;char c;if (fp1 = fopen(G:學(xué)習(xí)資料信息安全基礎(chǔ)實(shí)習(xí)ConsoleApplication1ConsoleApplication
21、12.txt, rb) = NULL)printf(Cannot Open The File!n);exit(1);if (fp2 = fopen(G:學(xué)習(xí)資料信息安全基礎(chǔ)實(shí)習(xí)ConsoleApplication1ConsoleApplication14.txt, wb) = NULL)printf(Cannot Open The File!n);exit(1);fscanf(fp1, %c, &c);doif (c = 0) i = haffTreei.leftChild;else i = haffTreei.rightChild;if (haffTreei.leftChild = -1)f
22、putc(haffTreei.letter, fp2);i = 2 * MaxN - 2;fscanf(fp1, %c, &c); while (c != );fclose(fp1);fclose(fp2);4.3 線性分組碼n 線性分組碼編碼void Encode()int c13, c27;string str, b1;int i = 0;FILE *fp2, *fp3;if (fp2 = fopen(G:學(xué)習(xí)資料信息安全基礎(chǔ)實(shí)習(xí)ConsoleApplication1ConsoleApplication12.txt, r) = NULL)printf(無(wú)法打開(kāi)文件!);exit(1);if
23、 (fp3 = fopen(3.txt, w) = NULL)printf(無(wú)法打開(kāi)文件!);exit(1);while (!feof(fp2)fscanf(fp2, %c, &str);/將2.txt中二進(jìn)制流寫入str中stri = 0;int num = i;num-;for (i = 0; i num; i+)b1i = stri;if (i % 3 = 0)c10 = stri - 0;else if (i % 3 = 1)c11 = stri - 0;else if (i % 3 = 2)c12 = stri - 0;if (i + 1) % 3 = 0)c20 = c10;c21
24、 = c11;c22 = c12;c23 = c10 + c12;c24 = c10 + c11 + c12;c25 = c10 + c11;c26 = c11 + c12;for (int j = 0; j 7; j+)if (c2j = 2)c2j = 0;else if (c2j = 3)c2j = 1;fprintf(fp3, %d, c2j);/將線性分組碼編碼結(jié)果放在3.txt中fclose(fp3);n 線性分組碼譯碼void Decoding() int G37=1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,1,1,0,1;int P34,Q43,HT73
25、,R27,C3; int R17;int H47=0,S4=0,E7=0; int i,j,n,k,t=0,w; FILE *fp1,*fp2;string str;int num;i=0;if(fp1=fopen(6.txt,r)=NULL) printf(無(wú)法打開(kāi)文件!); exit(1); if(fp2=fopen(G:學(xué)習(xí)資料信息安全基礎(chǔ)實(shí)習(xí)ConsoleApplication1ConsoleApplication14.txt,w)=NULL) /將線性分組碼的譯碼結(jié)果存入4.txt中 printf(無(wú)法打開(kāi)文件!); exit(1); while(!feof(fp1) fscanf(fp1,%c,&stri+); num=i;/printf(num=%d,num);for(i=0;i3;i+) for(j=3;j7;j+) Pij-3=Gij; for(i=0;i3;i+) for(j=0;j4;j+) Qji=Pij; for(i=0;i4;i+) for(j=0;j3;j+) Hij=Qij; for(i=0;i4;i+) j=3; Hii+j=1; for(i=0;i4;i+) for(j=0;j7;j+) HTji=Hij; for(w=0;wnum;w+)if(w%7=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 上市公司技術(shù)合作合同模板
- 個(gè)人房屋抵押貸款合同范本
- 臨時(shí)用工安全免責(zé)合同協(xié)議
- 個(gè)人理財(cái)規(guī)劃合同書(shū)
- 專業(yè)版辦公室裝修合同模板
- 二手汽車購(gòu)銷合同范本
- 云計(jì)算資源租賃與服務(wù)外包合同
- 個(gè)人住房貸款擔(dān)保合同樣本
- 分期付款房屋買賣協(xié)議書(shū)
- 上海超市股份轉(zhuǎn)讓合同樣本
- 中考記敘文閱讀
- 《計(jì)算機(jī)應(yīng)用基礎(chǔ)》-Excel-考試復(fù)習(xí)題庫(kù)(含答案)
- 產(chǎn)科溝通模板
- 2023-2024學(xué)年四川省成都市小學(xué)數(shù)學(xué)一年級(jí)下冊(cè)期末提升試題
- GB/T 7462-1994表面活性劑發(fā)泡力的測(cè)定改進(jìn)Ross-Miles法
- GB/T 2934-2007聯(lián)運(yùn)通用平托盤主要尺寸及公差
- GB/T 21709.13-2013針灸技術(shù)操作規(guī)范第13部分:芒針
- 2022年青島職業(yè)技術(shù)學(xué)院?jiǎn)握姓Z(yǔ)文考試試題及答案解析
- 急診科進(jìn)修匯報(bào)課件
- 一年級(jí)家訪記錄表(常用)
- 信息技術(shù)基礎(chǔ)ppt課件(完整版)
評(píng)論
0/150
提交評(píng)論