c语言加密的逆运算程序设计,关于逆运算的

#include

#include

#define L 15

#define N 4

gcd_NL()/*判断N,L是否互素*/

{

int l=L,n=N;

int temp,k;

if(L

{

temp=l;

l=n;

n=temp;

}

while(n!=0)

{

k=l%n;

l=n;

n=k;

}

return l;

}

qiu_ni() /*求出并返回N的逆*/

{

int s,yy;

int num;

for(s=1;s<=N;s++)

{ yy=(s*N)%L;

if(yy==1)

{num=s;

printf("N的逆为:%d\n",num);}

}

return num;

}

main()

{

int a[L]; /*自相关序列*/

int H[N][N]; /*hadamard矩阵*/

int e[N]; /*移位序列*/

int i,j,m,t;

int b[N][L]; /*b为交织序列*/

int b1[L][N]; /*转置交织矩阵*/

int c[N][L][N]; /*zcz序列*/

int num;

int F; /*最大公约数*/

// printf("input int L and N\n");

// scanf("%d\n,%d\n",&L,&N);

// printf("请输入自相关序列a\n");

for(m=0;m

{

a[m]=m;

// scanf("%d,",&a[m]);

}

printf("\n");

printf("请输入N*N阶矩阵H[N][N]:\n");

for(i=0;i

{

for(j=0;j

{

scanf("%d,",&H[i][j]);

}

printf("\n");

}

printf("\n");

num=qiu_ni();

F=gcd_NL();

if(F==1) /*L,N互素时的移位序列*/

{

for(i=0;i

e[i]=(num*i)%L;

}

else if(L%N==0) /*L整除N时的移位序列*/

{

for(i=0;i

e[i]=((L/N)*i)%L;

}

else if(N%L==0) /*N整除L时的移位序列*/

{

for(i=0;i

e[i]=i%L;

}

printf("输出移位序列为:\n"); /*输出移位序列*/

for(i=0;i

{

printf("%2d",e[i]);

printf("\n");

}

printf("交织序列为:\n");

for(i=0;i

{

for(j=0;j

{

b[i][j]=a[(e[i]+j)%L];

printf("%3d",b[i][j]);

}

printf("\n");

}

printf("转置后的交织序列:\n");/*转置交织矩阵*/

for(i=0;i

{

for(j=0;j

b1[j][i]=b[i][j];

printf("\n");

}

for(i=0;i

{

for(j=0;j

printf("%3d",b1[i][j]);

printf("\n");

}

printf("\n");

for(t=0;t

{

for(i=0;i

{

for(j=0;j

{

c[t][i][j]=b1[i][j]*H[t][j];

}

}

}

printf("输出zcz序列为:\n");

for(t=0;t

{

for(i=0;i

{

for(j=0;j

{

printf("%3d",c[t][i][j]);

}

printf("\n");

}

printf("\n");

}

}

其实程序不是很长的.可以帮我看看吗??

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值