$文本串加密和解密程序

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: $文本串加密和解密程序
#include <iostream>
using namespace std;
#define MaxSize 50

typedef char ElemType;
typedef struct {
  char data[MaxSize];
  int length;
} SqString;
SqString sqStr, matchStr;
void create(SqString &s, char cstr[]) {
  int i = 0;
  for (i = 0; cstr[i] != '\0'; i++) {
    s.data[i] = cstr[i];
  }
  s.length = i;
}

void DestroyStr(SqString &s) {

}

void show(SqString s) {
  int i;
  if (s.length > 0) {
    for (i = 0; i < s.length; i++) {
      cout << s.data[i];
    }
    cout << endl;
  }
}
SqString jiami(SqString p) {
  int i = 0, j = 0;
  SqString q;   //接收加密对应的字符
  for (i = 0; i <= p.length; i++) {
    j = 0;
    while (p.data[i] != sqStr.data[j] && j < sqStr.length) {
      j++;  //用j控制对应映射位置的字符
    }
    if (j >= sqStr.length)
      q.data[i] = p.data[i];
    else
      q.data[i] = matchStr.data[j]; //将映射的字符赋给字符串q的数据
  }
  q.length = p.length;
  return q;
}
SqString jiemi(SqString q) {
  int i = 0, j;
  SqString p;   //接收解密对应的字符
  for (i = 0; i <= q.length; i++) {
    j = 0;
    while (q.data[i] != matchStr.data[j] && j < matchStr.length) {
      j++;  //用j控制对应解密位置的字符
    }
    if (j >= matchStr.length)
      p.data[i] = q.data[i];
    else
      p.data[i] = sqStr.data[j];    //将解密的字符赋给字符串q的数据
  }
  p.length = q.length;
  return p;
}
int main() {
  SqString jiami(SqString p);     //函数声明
  SqString jiemi(SqString q);     //函数声明
  SqString p, q;
  char inputStr[MaxSize];         //存放输入的字符串
  char sqChar[MaxSize] = "abcdefghijklmnopqrstuvwxyz";    //顺序字符串
  char matchChar[MaxSize] = "ngzqtcobmuhelkpdawxfyivrsj";   //映射字符串
  create(sqStr, sqChar);
  create(matchStr, matchChar);
  cout << "输入字符串:" << endl;
  cin >> inputStr;
  create(p, inputStr);
  cout << "原文串:" << endl;
  show(p);
  q = jiami(p);
  cout << "加密串:" << endl;
  show(q);
  p = jiemi(q);
  cout << "解密串:" << endl;
  show(p);

  system("pause");
  return 0;
}

实验要求

1.1 实验目的

掌握串的应用算法设计。

1.2实验内容

一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:

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”。编写一个程序exp4-4.cpp,将输入的文本串加密后输出,然后进行解密并输出。


相关文章
|
7月前
|
存储 测试技术 数据安全/隐私保护
【Docker项目实战】使用Docker部署DailyTxT加密日记网络应用程序
【4月更文挑战第6天】使用Docker部署DailyTxT加密日记网络应用程序
148 2
|
2月前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
257 2
|
4月前
|
算法 安全 数据安全/隐私保护
实战案例2:简单的文件加密解密程序。
实战案例2:简单的文件加密解密程序。
145 0
|
5月前
|
网络协议 安全 网络安全
LabVIEW程序的常见加密方式
LabVIEW程序的常见加密方式
229 1
|
开发框架 网络协议 前端开发
一个对C#程序混淆加密,小巧但够用的小工具
一个对C#程序混淆加密,小巧但够用的小工具
175 1
|
7月前
|
vr&ar 数据安全/隐私保护
实验六 文本串的加密解密
实验六 文本串的加密解密
|
7月前
|
存储 安全 数据安全/隐私保护
利用Python实现简单的文本加密与解密
利用Python实现简单的文本加密与解密
379 8
|
存储 API 数据库
c# 如何将程序加密隐藏?
c# 如何将程序加密隐藏?
142 0
c# 如何将程序加密隐藏?
|
数据安全/隐私保护
Base64文本加密
Base64文本加密
|
算法 程序员 数据安全/隐私保护
【Python】编写代码,实现恺撒密码的加密算法以及欧氏距离程序
在本次python文章种,编写此函数的目的,主要是为了理解和掌握自定义函数过程的定义和调用方法,以及函数中的参数的作用,本次定义的函数是恺撒密码加解密算法
201 0