文本串的加密解密实验

实验题目

文本串的加密解密实验

实验内容

  • 一个文本串可用事先给定的字母映射表进行加密。

实验要求

  • 编写Sqstring.h文件,同时实现以下函数:
    • StrAssign():用于生成串
    • strcpy():用于复制串
    • strcmp():用于比较两个串的大小
    • DispStr():用于输出串

实验过程记录

  1. 创建一个名为SqString.h的文件,用于存放串操作的函数声明。
  2. 在SqString.h文件中,声明以下函数:
    • StrAssign():用于生成串
    • strcpy():用于复制串
    • strcmp():用于比较两个串的大小
    • DispStr():用于输出串
  3. 实现这些函数。在主程序中,先定义一个字母映射表,然后根据这个映射表进行加密和解密操作。
  4. 对于加密操作,用遍历来输入的文本串,将每个字符替换为映射表中对应的字符。解密操作则是将加密后的字符替换回原始字符。
  5. 最后,在Main.Cpp里测试所写的串操作函数。输入一个字符串,然后调用加密和解密函数,观察输出结果是否正确。
以下是SqString.h文件的内容:
#include <stdio.h>
#include <string.h>
typedef struct {
    char ch[100];
    int length;
} SqString;

void StrAssign(SqString *str, const char *src) {
    str->length = strlen(src);
    for (int i = 0; i < str->length; i++) {
        str->ch[i] = src[i];
    }
}

void DispStr(const SqString *str) {
    for (int i = 0; i < str->length; i++) {
        printf("%c", str->ch[i]);
    }
    printf("\n");
}

以下是Main.cpp文件的内容:
#include"SqString.h"

int main() {
    char str[10];
    // 原串
    SqString original;
    
    // 密码映射表
    char map[26] = {'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'};
    
    // 初始化原串
    printf("初始串:");
    scanf("%s",str);
    StrAssign(&original, str);
    
    // 密码串
    SqString encrypted;
    char c;
    for(int i = 0; i < original.length; i++) {
        c = original.ch[i];
        if(c >= 'a' && c <= 'z') {
            c = map[c-'a']; // 密码替换
        }
        encrypted.ch[i] = c; // 拼接成密文
    }
    encrypted.length = original.length;
    
    // 输出密文
    printf("加密串:");
    DispStr(&encrypted);
    
    // 解密
    for(int i = 0; i < encrypted.length; i++) {
        c = encrypted.ch[i];
        if(c >= 'a' && c <= 'z') {
            for(int j = 0; j < 26; j++) {
                if(map[j] == c) {
                    c = 'a' + j;
                    break;
                }
            }
        }
        original.ch[i] = c; // 恢复原文字母
    }
    
    // 输出解密结果
    printf("解密串:");
    DispStr(&original);
    
    return 0;
}

运行结果
结果如图所示。
在这里插入图片描述

实验总结(个人心得)
通过本次实验,学会运用一个简单的字符串处理库。
在实验过程中,也遇到一些问题,例如如何正确地复制字符串、如何比较两个字符串等。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值