#include<stdio.h>
#include<string.h>
#include<ctype.h>
void change1(char *str1, char *str2);
void change2(char *str, char *str2, char *str3);
void duizhaobiao(char *str2, char *str3, char *contrast);
void change3(char *mingwen, char *upper_mingwen);
void change4(char *upper_mingwen,char *contrast, char *anwen);
void change5(char *anwen, char *true_anwen, char *mingwen);
int main()
{
char str[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char str1[50];//原密码
char str2[50];//去掉空格和重复数字的密码
char str3[50];//未出现的字母
char contrast[50];
char mingwen[50];
char upper_mingwen[50];
char anwen[50];
char true_anwen[50];
printf("请输入密钥字(key word):");
gets(str1);
change1(str1,str2);
puts(str2);
change2(str,str2,str3);
puts(str3);
duizhaobiao(str2,str3,contrast);
puts(contrast);
printf("请输入明文:");
gets(mingwen);
change3(mingwen,upper_mingwen);
puts(upper_mingwen);
change4(upper_mingwen, contrast, anwen);
puts(anwen);
change5(anwen, true_anwen, mingwen);
printf("正在生成暗文中...\n");
puts(true_anwen);
return 0;
}
void change1(char *str1, char *str2)
{
int str1_length=50;
int i,j;
for(i=0;i<str1_length;i++){
for(j=0;j<str1_length;j++){
if(str1[i]==str1[j]&&i!=j){
str1[j]=' ';
}
}
}
int cnt=0;
for(i=0;i<str1_length;i++){
if(str1[i]!=' '){
str2[cnt]=str1[i];
cnt++;
}
}
str2[cnt]='\0';
}
void change2(char *str, char *str2, char *str3)
{
int i,j;
int k=0;
for(i=0;i<27;i++){
for(j=0;str2[j]!='\0';j++){
if(str2[j]==str[i]){
i++;
}
}
str3[k]=str[i]; k++;
}
}
void duizhaobiao(char *str2, char *str3, char *contrast)
{
int i,j;
for(i=0;str2[i]!='\0';i++){
contrast[i]=str2[i];
}
for(j=0;str3[j]!='\0';j++,i++){
contrast[i]=str3[j];
}
str3[i]='\0';
}
void change3(char *mingwen, char *upper_mingwen)
{
int i,j;
for(i=0;mingwen[i]!='\0';i++){
if(mingwen[i]>='a'&&mingwen[i]<='z'){
upper_mingwen[i]=mingwen[i]-32;
}else{
upper_mingwen[i]=mingwen[i];
}
}
}
void change4(char *upper_mingwen,char *contrast, char *anwen)
{
int i,j,k;int t=0;
for(i=0;upper_mingwen[i]!='\0';i++){
t=upper_mingwen[i];
t=t-65;
anwen[i]=contrast[t];
}
anwen[i]='\0';
}
void change5(char *anwen, char *true_anwen, char *mingwen)
{
int i;
for(i=0;mingwen[i]!='\0';i++){
if(mingwen[i]>='a'&&mingwen[i]<='z'){
true_anwen[i]=tolower(anwen[i]);
}else{
true_anwen[i]=anwen[i];
}
}
true_anwen[i]='\0';
}
|