早教吧作业答案频道 -->其他-->
字符串加密现要对一个由大写字母组成的字符串进行加密,有两种加密方法(1)替换法:把一个字母替换成它之后的第k个字母,比如AXZ,k取2,加密后得到CZB(Z之后第二个字符为B)(2)置换法:改
题目详情
字符串加密
现要对一个由大写字母组成的字符串进行加密,有两种加密方法
(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。
现要对一个由大写字母组成的字符串进行加密,有两种加密方法
(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。
▼优质解答
答案和解析
#include
#include
void replace(char *src, int n)
{
char *s = src;
n = n % 26;
while(*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: ");
//请合法输入eg. AXZ 2 231
scanf("%s%d%s", str, &n, key);
replace(str, n);
printf("str = %s\n", str);
disorder(str, key);
printf("str = %s\n", str);
}
#include
void replace(char *src, int n)
{
char *s = src;
n = n % 26;
while(*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
//请合法输入eg. AXZ 2 231
scanf("%s%d%s", str, &n, key);
replace(str, n);
printf("str = %s\n", str);
disorder(str, key);
printf("str = %s\n", str);
}
看了字符串加密现要对一个由大写字母...的网友还看了以下:
4.常量与变量的分类、特征字符与字符串(1)在C语言中,’a’与”a”是两个不同的字符常量。(2) 2020-05-14 …
C#有一个整数数组请声明一个字符串数组,将整数数组中的每一个元素的值转换为字符串保存到字符串数组中 2020-05-14 …
已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后 2020-07-01 …
数据结构几个题目,怎么写,求解答写出下面程序段中,①~⑩的每条语句执行后栈中的内容。栈中的元素类型 2020-07-10 …
写一函数voidfun(char*s)实现如下单词倒序功能:如s为字符串“astFVsULLY”, 2020-07-20 …
在下列表达式中,结果为字符型的是。A."125"-"90"B."abc"+"def在下列表达式中,结 2020-10-30 …
请编写程序,判断输入的字符串是否是回文串。要求:输入第一行为字符串个数n,0<n≤10000,其后n 2020-11-01 …
如果c为字符型变量,下面可以判断c是否为空格10、如果c为字符型变量,下面可以判断c是否为空格.A) 2020-11-07 …
matlab怎么将小于某个数字的数换成0以123456789为字符串把大于5的数字变为1小于等于5的 2020-11-07 …
高精度加法里的fori:=len1downto1doa[100+i-len1]:=ord(s1[i] 2020-12-20 …