// ASD.cpp : 定义控制台应用程序的入口点。
//设a~z的编号为1~26,空格为27,
//采用Kaesar密码方案,算法C=k1*P+k2,取k1=3,k2=5, 明文P="Peking University",计算密文C。
#include "stdafx.h"
#include <stdio.h>
void kaisa(int a[],int k1,int k2,int len)
{
for(int i=0;i<len;i++)
a[i]=(a[i]*k1+k2)%27;
}
void main()
{
printf("凯撒加密!\n");
char pp[100];
char C[28]="abcdefghijklmnopqrstuvwxyz ";
for(int i=0;i<27;i++) printf("%c",C[i]);
int k1=1,k2=0;
printf("密钥输入\n:");int ppi[100];scanf("%d,%d",&k1,&k2);
char c;int len=-1,j=0;
printf("明文输入\n:");c=getchar();
while(c!='0')
{len++;pp[len]=c;c=getchar();}
for(int j1=0;j1<=len;j1++)
for(int j2=0;j2<27;j2++)
{if(pp[j1]==C[j2])
{ppi[j]=j2;j++;}}
kaisa(ppi,k1,k2,len);
printf("\n密文输出\n:");
for(int i=0;i<len;i++) printf("%c",C[ppi[i]]);
}