字符串加密
密码在我们的生活中很常见,现在的加密算法最常用的是MD5和SHA512散列式算法,最早的密码加密方式很简单,容易被破译,但是却引领信息安全的潮流,本次实践,将实现最早的字符串加密方式,采用映射表的方式,实现简单的加密算法。

本次所用到的顺序串算法库点击此处可参考,不再在本篇中展示。编译环境:Code::Blocks16.01
项目要求如下:设计一个程序,实现加密、解密算法,将输入的文本进行加密后输出,然后进行解密并输出。
实现源代码如下:

实现1:
main.cpp
//*Copyright  (c)2017,烟台大学计算机与控制工程学院*
//*All rights reservrd.*
//*文件名称 :main.cpp*
//*作者:田长航*
//*完成时间:2017年10月23日*
//*版本号: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)            //在A串中未找到p.data[i]字母q.data[i]=p.data[i];else                        //在A串中找到p.data[i]字母q.data[i]=B.data[j];i++;}q.length=p.length;return q;
}SqString UnEncrypt(SqString q)
{int i=0,j;SqString p;while (i<q.length){for (j=0; q.data[i]!=B.data[j]&&j<B.length; j++);if (j>=B.length)            //在B串中未找到q.data[i]字母p.data[i]=q.data[i];else                    //在B串中找到q.data[i]字母p.data[i]=A.data[j];i++;}p.length=q.length;return p;
}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;
}
运行结果截图如下:


实现2:
//*Copyright  (c)2017,烟台大学计算机与控制工程学院*
//*All rights reservrd.*
//*文件名称 :main.cpp*
//*作者:田长航*
//*完成时间:2017年10月23日*
//*版本号: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++); //循环条件少加了&&j<A.lengthif (j>=p.length)            //在A串中未找到p.data[i]字母q.data[i]=p.data[i];else                        //在A串中找到p.data[i]字母q.data[i]=B.data[j];i++;}q.length=p.length;return q;
}SqString UnEncrypt(SqString q)
{int i=0,j;SqString p;while (i<q.length){for (j=0; q.data[i]!=B.data[j] && j<B.length; j++);//循环条件少加了&&j<B.lengthif (j>=q.length)            //在B串中未找到q.data[i]字母p.data[i]=q.data[i];else                    //在B串中找到q.data[i]字母p.data[i]=A.data[j];i++;}p.length=q.length;return p;
}int main()
{SqString p,q;StrAssign(A,"abcdefghijklmnopqrstuvwxyz");  //建立A串StrAssign(B,"ngzqtcobmuhelkpdawxfyivrsj");  //建立B串char str[MaxSize];printf("\n");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;
}
运行结果截图如下:



数据结构上机实践第八周项目4-字符串加密相关推荐

  1. 数据结构上机实践第八周项目9-广义表算法库及应用

    广义表算法库及应用 为了丰富算法库,以应对各类工程的需要,本次实践将进行广义表算法库的建立以及应用. 项目要求一: 建立广义表算法库,包括:  ① 头文glist.h,定义数据类型,声明函数:  ② ...

  2. 数据结构上机实践第八周项目2- 建立链串的算法库

    建立链串的算法库 一般每一种数据结构都不会局限于在连续空间内的存取,那我们的串自然也不反常,本次实践将建立链串的算法库,应用于有需求的工程当中,提高程序的容错性. 本次实践依然会用到多文件组织工程的建 ...

  3. 数据结构上机实践第八周项目8-稀疏矩阵的三元组表示的实现及应用

    稀疏矩阵的三元组表示的实现及应用 在现代社会中,在一个大量的人群集体中,总会有和某个人有相互之间的关系或者单向关系的,那我们的矩阵也是如此,稀疏矩阵压缩存储的方式,便可以让这种关系一目了然,巧妙应用. ...

  4. 数据结构上机实践第八周项目7—对称矩阵的压缩存储及基本运算

    对称矩阵的压缩存储及基本运算 贺老师的慕课当中,给我们拓展了这样的知识. 所以,本次的项目实践要求如下: 用压缩形式存储对称矩阵,实现下面的操作并测试 void Init(int *&b);/ ...

  5. 数据结构上机实践第八周项目6- 猴子选大王(数组版)

    猴子选大王(数组版) 在之前的项目中,实现了猴子选大王的项目要求,本次实践,将再次实现这个项目,但是运用数组的方法,做到一题多解,集思广益. 项目要求如下:一群猴子,编号是1,2,3 -m,这群猴子( ...

  6. 数据结构上机实践第八周项目5 - 计数的模式匹配

    计数的模式匹配 模式匹配在生活中运用广泛,日常所见的指纹识别,人脸识别......无一不用到模式匹配,为了体现模式匹配的基本思想,本次实践将实现简单的字符串的计数模式匹配. 项目要求如下:采用顺序结构 ...

  7. 数据结构上机实践第八周项目3-顺序串算法

    顺序串算法 本次实践项目要求如下: 采用顺序存储方式存储串,实现下列算法并测试:  (1)试编写算法实现将字符串S中所有值为c1的字符换成值为c2的字符:  void Trans(SqString * ...

  8. 数据结构上机实践第八周项目1- 建立顺序串的算法库

    建立顺序串的算法库 本次实践将建立顺序串的算法库,这样可以方便的将此算法运用于我们的所需的工程中,简化操作. 本次实践将用到多文件组织工程的建立,建立方法可以点击此处参照.(工程环境:Visual C ...

  9. 数据结构上机实践第三周项目2 - 建设“顺序表”算法库

    [项目2 - 建设"顺序表"算法库]  领会"0207将算法变程序"部分建议的方法,建设自己的专业基础设施算法库.这一周,建的是顺序表的算法库.  算法库包括两 ...

最新文章

  1. Python基础学习之 函数
  2. 上海中学生的科技活动小论文集锦
  3. vue框架实现pdf在线预览
  4. 大剑无锋之delete、drop、truncate【面试推荐】
  5. Linux搭建深度学习环境使用指南
  6. Linux Deepin 版本大全,Deepin下载-Deepin linuxv20.0 官方版下载-6188手游网
  7. angular封装富文本编辑器指令
  8. G1垃圾收集器之SATB
  9. Java 使用SAX解析XML文档
  10. 解密初、中、高级程序员的进化之路(前端)
  11. 双11尾款人的续命丸哪里找?送3本精神食粮助你快速回血
  12. 趣谈网络协议(二)传输层
  13. 【华为机试真题详解】机试题按知识点整理(入门指引)
  14. python 气泡图 聚类_R可视化 | 气泡图
  15. 浙大 计算机 设计学 考研科目,2020浙江大学软件工程考研参考书目
  16. [Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解
  17. docker gpu 创建 训练环境_通过Dockerfile创建caffe-gpu环境
  18. 计算机水平每分钟多少字,电脑打字每分钟打多少在一才算快啊? 一般拼音打字一分钟多少才算可以?...
  19. MySQL事务原理总结
  20. Java中高级面试题部分答案解析

热门文章

  1. bzoj 3357: [Usaco2004]等差数列(DP+map)
  2. 吴恩达神经网络和深度学习-学习笔记-42-目标检测
  3. 吴恩达神经网络和深度学习-学习笔记-8-梯度消失与爆炸 + 梯度检测
  4. [Python] 更改矩阵形状:reshape(m,n)、view(m,n)和view_as(tensor)
  5. [Python] numpy库的简介和常用函数
  6. python机器学习库sklearn——决策树
  7. vivado2018.3和modelsim10.6d进行联合仿真
  8. Ubuntu图形界面更改软件下载源为清华镜像站以及解决等待apt退出的问题
  9. 快速写出matlab的GUI程序
  10. fpga与三八译码器(BASYS3 VIVADO18)