文本串加密和解密程序。一个文本串可用事先给定的字母映射表进行加密
前情提要
设字母映射表为:
a b c d e f g h i j k l m n o p q r s t u v w x y z
n g z q t c o b m u h e l k p d a w x f y i v r s j
测试数据:encrypt 加密后tkzwsdf
将输入的文本串进行加密后输出,然后进行解密并输出。
代码实现
#include<stdio.h>
#include<string.h>
#define MaxSize 100
typedef struct
{
char data[MaxSize];
int length;
}HString;
void StrAssign(HString &T,char *chars)//生成一个其值等于串常量chars的串T
{
int i=0;
for(;chars[i]!='\0';i++)
{
T.data[i]=chars[i];
}
T.length=i;
}
void DispStr(HString s)
{
int i;
if(s.length>0)
{
for(i=0;i<s.length;i++)
printf("%c",s.data[i]);
printf("\n");
}
}
HString EnCrypt(HString A,HString B,HString T)//输入字母映射表和要加密的串
{
int i=0,j;//j为A串中的下标
HString str;//创建新串,为T加密后的串
while(i<T.length)
{
for(j=0;T.data[i]!=A.data[j];j++);
if(j>=A.length)printf("出错了!");
else str.data[i]=B.data[j];
i++;
}
str.length=T.length;
return str;
}
HString UnEncrypt(HString A,HString B,HString T)//输入字母映射表和要解密的串
{
int i=0,j;
HString str;
while(i<T.length)
{
for(j=0;T.data[i]!=B.data[j];j++);
if(j>=A.length)printf("出错了!");
else str.data[i]=A.data[j];
i++;
}
str.length=T.length;
return str;
}
int main()
{
HString A,B,S2,S1,S3;
char str[MaxSize];
StrAssign(A,"abcdefghijklmnopqrstuvwxyz");
StrAssign(B,"ngzqtcobmuhelkpdawxfyivrsj");
printf("请输入要加密的串>>");
gets(str);
StrAssign(S1,str);
S2=EnCrypt(A,B,S1);
printf("加密后>>");
DispStr(S2);
printf("解密后>>");
S3=UnEncrypt(A,B,S2);
DispStr(S3);
}
输出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)