首页 > 编程知识 正文

扰码及解扰码,扰码器和解码器

时间:2023-05-03 05:57:51 阅读:221838 作者:4202

主要原理


通过以上五位移位寄存器产生扰乱序列,与原始输入序列异或相加,最后再通过与扰乱序列异或相加恢复成原始序列。

头文件 #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。

运行结果

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。