五级扰码器解扰码小程序
发布时间:2025-12-09 20:14:59
浏览次数:4
主要原理
通过以上五位移位寄存器产生扰乱序列,与原始输入序列异或相加,最后再通过与扰乱序列异或相加恢复成原始序列。
头文件
#include "stdafx.h"#include "stdio.h"#include "stdlib.h"
main()函数
int main(){int x1[62] = { 0 };//第一个输入序列:全零序列62位int x2[62]; //第二个输入序列:随机序列62位for (int i = 0; i < 62; i++)x2[i] = rand() % 2;printf("62位全零序列:\n");for (int i = 0; i<62; i++)printf("%d", x1[i]);operate(x1);printf("\n62位随机序列:\n");for (int i = 0; i<62; i++)printf("%d", x2[i]);operate(x2);return 0;}
定义x1、x2两个序列,x1为全零序列,x2为随机序列,其62位0或1的数值由rand()函数产生;然后输出显示,之后通过operate子函数将序列传值过去进行加扰和解扰操作。
rand()函数的头文件为stdlib.h。
operate子函数
void operate(int x[62]){int D[5] = { 0,1,0,0,1 };//五级移位寄存器int y[62];//扰乱序列int y1[62];//扰乱后序列int X[62];//x解扰后序列//加扰器int D_24;for (int i = 0; i < 62; i++){y[i] = D[0];if (D[2] == D[4])D_24 = 0;elseD_24 = 1;for (int j = 4; j >= 1; j--)D[j] = D[j - 1];D[0] = D_24;}for (int i = 0; i < 62; i++){if (x[i] == y[i])y1[i] = 0;elsey1[i] = 1;}printf("\n加扰后序列:\n");for (int i = 0; i<62; i++)printf("%d", y1[i]);//解扰器for (int i = 0; i < 62; i++){if (y1[i] == y[i])X[i] = 0;elseX[i] = 1;}printf("\n解扰后序列:\n");for (int i = 0; i<62; i++)printf("%d", X[i]);printf("\n");}
x为传递过来的待处理的序列,y为通过五级扰码器产生的随机扰乱序列,y1为y序列与x序列做异或加之后的序列,X为通过解扰操作后的序列。
五级扰码器,五个序列对应的是D0、D1、D2、D3、D4,每次向右移一位。D0每次都为D2与D4异或加得到的值,最后得到的y序列是62次循环后每次D0的值。
将x序列与扰乱序列y每位分别做异或加得到y1序列。
输出扰乱后的序列。
将y1序列与干扰序列y再次做异或加,得到与干扰前x序列一样的序列X。
输出解扰后的序列X。
运行结果