字符串加密
drdrdr5656
2013-09-03
现要对一个由大写字母组成的字符串进行加密,有两种加密方法
(1)替换法:把一个字母替换成它之后的第k个字母,比如AXZ,k取2,加密后得到CZB(Z之后第二个字符为B)
(2)置换法:改变原来字符串中字母的顺序,比如将顺序<2 3 1>应用到ABC上得到的密文为BCA。(顺序<2 3 1>指将原字符串的第2个字符作为新字符串的第1个字符,将原字符串的第3个字符作为新字符串的第2个字符,以此类推)
这两种方法单独使用都很容易被人破解,所以我们将两种方法联合使用,对一个字符串进行两次加密,比如AXZ在k=2和顺序<2 3 1>下加密得到ZBC。
满意答案
s13419462
LV13
2013-09-04#include <stdio.h>
#include <stdlib.h>
void replace(char *src, int n)
能济离法卷乡{
char *s = src;
n = n % 26;
wh免类广规呢革许类委场心ile(*s != 0)
{
*s = *s + n;
if(*s > 'Z') *s -= 26;
s++;
}
}
void disorder(char *s, char *key)
{
int len = 0 , i = 0;
char *tmp;
while(s[len++] != 0);
tmp = (char*声斗胜素)malloc(sizeof(char) * (len));
while(i < len) tmp[i] = s[i++];
for(i = 0; i < len - 1; i++)
{
s[i] = tmp[key[i] - '0' - 1];
}
free(tmp);
}
void main()
{
int n;
char str[100], key[100];
printf("input <str 来自n order >: ");
/360问答/请合法输入eg. AXZ 2 231
scanf("%s%d%s", s适些激美航tr, &n, key);
replace(st叫太既击r, n);
printf("str = %s\n", s抓率体婷统非序失胡倒关tr);
disorder(str, key);
printf("str = %s\n", str);
}
您可能感兴趣的内容
相关问题
查看更多相关问题