前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >27-字符串加密和解密算法

27-字符串加密和解密算法

作者头像
lexingsen
发布2022-02-25 09:04:22
1.3K0
发布2022-02-25 09:04:22
举报
文章被收录于专栏:乐行僧的博客乐行僧的博客
思路

根据题意,思路是比较好想的,但是要注意以下两点

  • 加密时,要注意偏移之后的值(下标 + 5)不能超能ascii码所能表示的范围。
  • 解秘时,要注意偏移之后的值(下标 - 5)不能小于0,所以需要加上N然后取模。
代码
代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

/*
 * 在本实例中要求设计一个加密和解密算法。
 * 在对一个指定的字符串加密之后,利用解密函数能够对密文解密,显示明文信息。
 * 加密的方式是将字符串中每个字符加上它在字符串中的位置和一个偏移值 5。
 * 以字符串“mrsoft”为例,第一个字符“m”在字符串中的位置为0,那么它对应的密文是“'m'+0+5",即 r。
 * */
#define N 128
char* encode(char* s) {
    int n = strlen(s);
    for (int i = 0; i < n; i++) {
        s[i] = s[i] + (i + 5) % N;
    }
    return s;
}

char* decode(char* s) {
    int n = strlen(s);
    for (int i = 0; i < n; i++) {
        s[i] = s[i] - (i + 5 + N) % N;
    }
    return s;
}

int main() {
    char s[N] = {0};
    puts("please input the string:\n");
    gets(s);
    char* t = encode(s);
    printf("encode s is %s\n", t);
    char* ans = decode(s);
    printf("decode s is %s\n", ans);
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 思路
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档