您的位置:首页 > 理论基础 > 数据结构算法

2015年大二上-数据结构-串(4)- 字符串加密

2015-12-06 11:22 453 查看
一个文本串可用事先编制好的字符映射表进行加密。例如,设字符映射表为:

1.abcdefghijklmnopqrstuvwxyz
2.ngzqtcobmuhelkpdawxfyivrsj

   则字符串“lao he jiao shu ju jie gou”被加密为“enp bt umnp xby uy umt opy”。

   设计一个程序,实现加密、解密算法,将输入的文本进行加密后输出,然后进行解密并输出。

/*
*Copyright (c) 2014,烟台大学计算机学院
*All rights reserved.
*文件名称:Annpion.cpp
*作者:王耀鹏
*完成日期:2015年12月6日
*版本号:v1.0
*
*问题描述:顺序串算法
*输入描述:输入原文串。
*输出描述:输出相应的加密串和解密串。
*/
#include <stdio.h>
#include "sqString.h"
SqString A,B; //用于存储字符映射表
SqString EnCrypt(SqString p)
{
int i=0,j;
SqString q;
while(i<p.length)
{
for(j=0;p.data[i]!=A.data[j]&&j<A.length;++j);
if(j>=A.length)
q.data[i]=p.data[i];
else q.data[i]=B.data[j];
++i;
}
q.length=p.length;
return q;
}
SqString UnEncrypt(SqString p)
{
int i=0,j;
SqString q;
while(i<p.length)
{
for(j=0;p.data[i]!=B.data[j]&&j<B.length;++j);
if(j>=A.length)
q.data[i]=p.data[j];
else q.data[i]=A.data[j];
++i;
}
q.length=p.length;
return q;
}
int main()
{
SqString p,q;
StrAssign(A,"abcdefghijklmnopqrstuvwxyz");  //建立A串
StrAssign(B,"ngzqtcobmuhelkpdawxfyivrsj");  //建立B串
char str[MaxSize];
printf("输入原文串:");
gets(str);                                  //获取用户输入的原文串
StrAssign(p,str);                           //建立p串
printf("加密解密如下:\n");
printf("  原文串:");
DispStr(p);
q=EnCrypt(p);                               //p串加密产生q串
printf("  加密串:");
DispStr(q);
p=UnEncrypt(q);                         //q串解密产生p串
printf("  解密串:");
DispStr(p);
printf("\n");
return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: