思路

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

  • 加密时,要注意偏移之后的值(下标 + 5)不能超能ascii码所能表示的范围。
  • 解秘时,要注意偏移之后的值(下标 - 5)不能小于0,所以需要加上N然后取模。

代码

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

27-字符串加密和解密算法相关推荐

  1. 字符串加密、解密算法

    字符串加密.解密算法包括: MD5.Des.Base64三种方式,详情如下所示:using System; using System.Collections.Generic; using System ...

  2. c语言 字符串加密和解密算法实现

    #include <stdio.h> #include <string.h> #define KEY 5 //偏移量/** 加密和解密字符串* 加密规则:字符串每个字符加上其在 ...

  3. 常见的加密和解密算法—MD5

    转载:https://www.cnblogs.com/maohuidong/p/7967257.html 常见的加密和解密算法-MD5 一.MD5加密概述 Message Digest Algorit ...

  4. 简单移位密码——凯撒加密、解密算法

    简单移位密码--凯撒加密.解密算法 移位密码是简单的替换密码(simple substitution cipher),即将明文的一个字符用相应的一个密文字符替换. 算法描述:设P=C=K=Z26,对k ...

  5. C语言加密和解密算法

    C语言加密和解密算法 简介:字符串的加密和解密方法一直被广泛应用,最常见的无非是 MD5 散列函数(MD5是信息摘要的一种,可以从任意长度的字符串生成128位的哈希值). 先来看代码:(注意作者代码中 ...

  6. ecshop 解密index.php,PHP-威盾PHP加密专家解密算法

    /*********************************** *威盾PHP加密专家解密算法 By:Neeao *http://Neeao.com *2009-09-10 ********* ...

  7. java加密与解密工具_cat: CAT,全称Cryptographic Algorithm Tool,是一款小巧的Java加密与解密算法调用工具包...

    cat 一.介绍 cat:全称Cryptographic Algorithm Tool 主要提供以下加密算法调用: 1.AES 2.DES 3.DSA 4.MD5 5.MersenneTwister( ...

  8. php dse加密,dse加密、解密算法.doc

    dse加密.解密算法 #include "stdio.h"#include "string.h"#include "memory.h"enu ...

  9. java 加密工具包_Java加密和解密算法调用工具包

    软件架构及说明 1.本工具包基于纯java编写而成: 2.部分算法密钥对基于bcprov-jdk16的调用生成. 3.部分加密与解密算法来自网上公开的源码,并在此基础上进行整理和优化而来: 4.本加密 ...

最新文章

  1. Docker监控方案(TIG)的研究与实践之Grafana
  2. 音视频技术开发周刊 | 137
  3. CF1237F Balanced Domino Placements(dp+组合计数)
  4. 几个非常实用的JQuery代码片段
  5. 利用寄存器进入栈值交换
  6. 数据库冷备份和热备份
  7. (剑指Offer)面试题49:把字符串转换为整数
  8. CHSBO2018游记
  9. 计算机三级设计与应用题,计算机数据库三级设计与应用题.pdf
  10. I00021 有负数项的数列之和
  11. Java 初学记录之一 快速输入
  12. CPU负载均衡之loadavg计算
  13. 政务中心综合信息系统建设方案
  14. redis列表list常用命令大全
  15. 柴静,你能看见自己吗?
  16. 为何苹果赚取智能手机市场大部分利润?
  17. Xcode No account for team . Add a new account in the Accounts preference pane or verify that your
  18. mysql触发器应用场景_MySQL触发器的使用场景及方法实例
  19. 内存虚拟化EPT技术简介
  20. MySQL 存储引擎 (SphinxSE)安装详解

热门文章

  1. 拥抱ROS2系列:ROS2概述和实践入门
  2. Linux开机启动管理---systemd使用
  3. 如何修改通达OA的登录首页的LOGO
  4. 联想计算机boss设置,联想电脑如何进行bios设置 联想电脑bios设置教程
  5. 华为云灾备方案想人所想,筑起企业最后一道防线
  6. 关于王阳明心学的一些记录(2023.6.19)
  7. 网易云歌词解析(配合audio标签实现本地歌曲播放,歌词同步)
  8. Squid代理服务器配置/二级代理
  9. Win10十月更新后操作系统激活失败怎么办?
  10. 3D结构光原理及应用浅析