// AA.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<stdio.h>
#include<string.h>
void HILL(int P[],int len,int (* k)[10],int c[])
{
int i,i1,j,j1;
for(i=0;i<10;i++)for(i1=0;i1<10;i1++) k[i][i1]=0;
int m; //组长度
printf("\n输入组长(组长小于等于密文长度):");scanf("%d",&m);
printf("输入密钥矩阵(矩阵为方正)");
for(i=1;i<=m;i++) {printf("第%d行",i); for(i1=1;i1<=m;i1++) scanf("%d",&k[i][i1]);}
for(i=1;i<=len/m;i++)
{
for(j=1;j<=m;j++)
for(j1=1;j1<=m;j1++)
{ c[j+(i-1)*m]=(c[j+(i-1)*m]+k[j][j1]*P[j1+(i-1)*m])%26;}
}
}
void RSA(int p,int q,int P[])
{
int n,fn;
n=p*q;fn=(p-1)*(q-1);
int e;
}
int main(int argc, char *argv[])
{
//HILL加密
int khill[10][10];
int phill[100],c[100],i;int len=0;char c1;
for(i=0;i<100;i++) {phill[i]=0;c[i]=0;}
printf("输入明文!#结束:");
c1=getchar();
while(c1!='#'){len++;phill[len]=(int)c1;c1=getchar();}
for(i=1;i<=len;i++)
{if(phill[i]>=65&&phill[i]<90) phill[i]=phill[i]-64;
else if(phill[i]>=97&&phill[i]<122) phill[i]=phill[i]-96;
}
HILL(phill,len,khill,c);
printf("密文为:");
for(i=1;i<=len;i++) {c[i]=c[i]+96;printf("%c",c[i]);}
scanf("%d",&i);
return 0;
}