输入可包含所有可见字符的字符串,并随机产生一个置乱表作为密钥保存到文件并显现出来,然后根据置乱表进行数据变换加密。在解密时导入文件中的替换表,根据该置乱表解密。
例:输入字符串abcdef,输出daebcf
你的例子输入字符串abcdef,输出daebcf,,这不是将字符串排序打乱了吗,如果要用加密,用md5就可以了
你好同学,代码供参考:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int num, i, j;
int keys[26], p[26], temp;
char words[1000], encodewords[1000];
srand((unsigned)time(NULL));
for(i=0;i<26;i++) p[i]=rand();
for(i=0;i<26;i++) keys[i]=i;
for(i=0;i<26;i++){
for(j=0;j<i;j++)
if(p[i]>p[j]) {
temp=p[i];
p[i]=p[j];
p[j]=temp;
temp=keys[i];
keys[i]=keys[j];
keys[j]=temp;
}
}
printf("加密密钥:\n") ;
for(i=0;i<26;i++)printf("%d ", keys[i]);
printf("\n请输入需要加密的字母(小写)\n");
scanf("%s",&words);
for(num=0;words[num]!='\0';num++);
for(i=0;i<num;i++){
j=words[i]-'a';
encodewords[i]=keys[j]+'a';
}
printf("加密后为%s", encodewords);
}