五级扰码器解扰码小程序

主要原理

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

头文件
#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;
		else
			D_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;
		else
			y1[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;
		else
			X[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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值