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

来源:互联网 发布:足彩过滤软件 编辑:程序博客网 时间:2024/05/22 08:22

一个文本串可用事先编制好的字符映射表进行加密。例如,设字符映射表为:

 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;}

运行结果:


0 0
原创粉丝点击