【C语言】程序设计加密解密

  • 🚩write in front🚩   

  • 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎
  • 🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博主、华为云享专家、阿里云专家博主、掘金优秀创作者、全网粉丝量7w+、个人社区人数累计4w+、全网访问量100w+🏅
  • 🆔 本文章内容由 謓泽 原创 如需相关转载请提前告知博主 ⚠
  • 📑 创作时间:2022 年 2 月 22 日 📅
  • 📝 个人主页:謓泽的博客 📃
  • 📣 专栏系列:YY_謓泽的博客📃
  • 🙌 Gitee:謓泽 (wsxsx) - Gitee.com ⭐️
  • 🎁 点赞👍+ 收藏⭐️+ 留言📝​
  • ✉️ 我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 📩

目录

🚩write in front🚩   

Page

⒈题目内容

⒉题目要求

⒊程序的加密 & 解密

方案①

方案② 

⒋程序代码 

Code①

Code② 

⒌代码运行视频

⒍总结

Page

在设计程序的时候为了防止一些敏感信息倍泄漏的时候,通常需要对这些信息进行加密的时候,以用户的的登录密码为例,如果密码以明文(密码)的形式存储在数据表当中,就会很容易被人发现。相反,如果密码以密文的形式进行存储的话,即使别人从数据表当中发现了密码,这也是加密之后的密码。

⒈题目内容

设计一个主函数[main]

循环语句设置一个无限循环

声明两组数组分别用来存放加密字符(encypt_str)解密字符(decode_str)

⒉题目要求

用户进行某一个操作需要输入一个命令,如果命令输入错误,系统会进行提示(设计菜单)

当用户输入命令字符"0"要求用户进行输入加密的字符

当用户输入命令字符"1"会显示加密字符新的加密字符

当用户输入命令字符"2"会对刚加密的文件来进行解密

当用户输入命令字符"3"退出当前的程序设计应用程序

⒊程序的加密 & 解密

加密⇢这里我们可以设置两种不同的加密方法供大家参考选择如下所示[↓]

方案①

¹将字符串中每个字符加上它在字符所在的位置(默认最开始的字符为"1"开始)+偏移量⒌

方案② 

²将字符串中每个字符加上它在字符所在的位置(默认最开始的字符为"1"开始)+随机值(1~10)

拓展知识点⇢你也可以在上面原有的基础上进行优化哟(●'◡'●)

⒋程序代码 

Code①

¹将字符串中每个字符加上它在字符所在的位置(默认最开始的字符为"1"开始)+偏移量⒌

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<Windows.h>
#include<string.h>
unsigned int g_Count = 0;
void color(short x)
{if (x >= 0 && x <= 15)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);elseSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
void menu()
{color(0);system("cls");color(1);printf("|-------★<<<<<<<   加密&解密   >>>>>>> ★------|\n");color(10);printf("|-------★ 0.要求用户进行输入加密的字符 ★------|\n");printf("|-------★ 1.会显示加密字符新的加密字符 ★------|\n");printf("|-------★ 2.会对刚加密的文件夹进行解密 ★------|\n");printf("|-------★ 3.退出当前的程序设计应用程序 ★------|\n");
}
enum Commond_str
{Encryption = 0,New_Encryption = 1,Decode = 2,Exit = 3,
};
/*会显示加密字符新的加密字符方案一功能:将字符串中每个字符加上它在字符所在的位置(默认最开始的字符为"1"开始)+偏移量⒌
*/
void new_Encryption(int Count, char* len, char* decode_str)
{int i = 0;Count = strlen(len);for (i = 0; i < Count; i++){decode_str[i] = len[i] + i + 5;}printf("%s\n", decode_str);
}
int main(void)
{unsigned int Count = 0, Commond = 0;char password[10] = { 0 };char encypt_str[20] = { 0 };//加密字符char decode_str[40] = { 0 };//解密字符int numbers = 0;while (g_Count < 3){printf("No.%d:如需要帮助请输入[help]->", g_Count + 1);scanf("%s", password);if (strcmp("help", password) == 0){menu();break;}elseprintf("%d.Your input !(help)", g_Count + 1);printf("\n");if (g_Count == 3){printf("Fool Your str error!exit");break;}g_Count++;}g_Count = 1;while (1){printf("No.%d:Please input Commond:", g_Count++);scanf("%d", &Commond);switch (Commond){case Encryption:scanf("%s", encypt_str); printf("Your input encypt_str:%s\n", encypt_str); break;case New_Encryption:new_Encryption(Count, encypt_str, decode_str); break;//第一种方案case Decode:printf("encypt_str:%s\n", encypt_str); break;//注:解密以后的字符就是加密case Exit:printf("Exit:kk提醒您~\n"); break;}if (Commond == Exit)break;}return 0;
}

Code② 

²将字符串中每个字符加上它在字符所在的位置(默认最开始的字符为"1"开始)+随机值(1~10)

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<Windows.h>
#include<string.h>
//随机值需要的两种库函数头文件
#include<time.h>
#include<stdlib.h>
unsigned int g_Count = 0;
void color(short x)
{if (x >= 0 && x <= 15)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);elseSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
void menu()
{color(0);system("cls");color(1);printf("|-------★<<<<<<<   加密&解密   >>>>>>> ★------|\n");color(10);printf("|-------★ 0.要求用户进行输入加密的字符 ★------|\n");printf("|-------★ 1.会显示加密字符新的加密字符 ★------|\n");printf("|-------★ 2.会对刚加密的文件夹进行解密 ★------|\n");printf("|-------★ 3.退出当前的程序设计应用程序 ★------|\n");
}
enum Commond_str
{Encryption = 0,New_Encryption = 1,Decode = 2,Exit = 3,
};
/*会显示加密字符新的加密字符方案二功能:将字符串中每个字符加上它在字符所在的位置(默认最开始的字符为"1"开始)+随机值(1~10)
*/
void new_Encryption(int Count, char* len, char* decode_str,int randNumber)
{int i = 0;Count = strlen(len);for (i = 0; i < Count; i++){decode_str[i] = len[i] + i + randNumber;}printf("%s\n", decode_str);
}
int main(void)
{srand((unsigned)time(NULL));int randNumber = rand() % 10 + 1;unsigned int Count = 0, Commond = 0;char password[10] = { 0 };char encypt_str[20] = { 0 };//加密字符char decode_str[40] = { 0 };//解密字符int numbers = 0;while (g_Count < 3){printf("No.%d:如需要帮助请输入[help]->", g_Count + 1);scanf("%s", password);if (strcmp("help", password) == 0){menu();break;}elseprintf("%d.Your input !(help)", g_Count + 1);printf("\n");if (g_Count == 3){printf("Fool Your str error!exit");break;}g_Count++;}g_Count = 1;while (1){printf("No.%d:Please input Commond:", g_Count++);scanf("%d", &Commond);switch (Commond){case Encryption:scanf("%s", encypt_str); printf("Your input encypt_str:%s\n", encypt_str); break;case New_Encryption:new_Encryption(Count, encypt_str, decode_str,randNumber);break;//第二种方案case Decode:printf("encypt_str:%s\n", encypt_str); break;//注:解密以后的字符就是加密case Exit:printf("Exit:kk提醒您~\n"); break;}if (Commond == Exit)break;}return 0;
}

⒌代码运行视频

运行结果程序设计加密&解密

说明↠方案二和方案一只是会显示加密字符新的加密字符功能不同其它一样。

⒍总结

        总结⇨在上述程序对于初学者来说可能会有一定的难度,难度实际上并不是代码的本身。而是有很多库的函数需要我们去了解要学会怎么去使用他们,对于初学者来说是一个不错的练习的应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黛姿秘语,匠心之作,严谨工艺铸就完美肌肤

在喧嚣的都市中&#xff0c;我们每个人都渴望找到一款可以信赖长期使用的护肤品&#xff0c;让匹配的肌肤重新焕发光彩&#xff0c;找到更加年轻的自己&#xff0c;但是目前市面上的产品让人眼花缭乱&#xff0c;作为普通的消费者&#xff0c;无法去辨别什么产品好&#xff0c;…

北京市经信局局长姜广智带队调研三六零 强调大模型应与行业结合

12月6日&#xff0c;北京市经济和信息化局局长姜广智、副局长王磊带队走访调研三六零集团&#xff0c;就共促城市级数字安全基础设施项目落地&#xff0c;打造引领行业发展标杆项目&#xff0c;推动大模型落地应用赋能产业、行业发展等话题进行交流。360集团创始人周鸿祎接待来…

(十五)Flask覆写wsgi_app函数实现自定义中间件

中间件 一、剖析&#xff1a; 在前面讲session部分提到过&#xff1a;请求一进来&#xff0c;Flask会自动调用应用程序对象【Flask(__name__)】的__call__方法&#xff0c;这个方法负责处理请求并返回响应&#xff08;其实如下图&#xff1a;其内部就是wsgi_app方法&#xff…

C++ 指针进阶

目录 一、字符指针 二、指针数组 三、数组指针 数组指针的定义 &数组名 与 数组名 数组指针的使用 四、数组参数 一维数组传参 二维数组传参 五、指针参数 一级指针传参 二级指针传参 六、函数指针 七、函数指针数组 八、指向函数指针数组的指针 九、回调函…

docker基本管理和概念

1、定义&#xff1a;一个开源的应用容器引擎&#xff0c;基于go语言开发&#xff0c;运行在liunx系统中的开源的、轻量级的“虚拟机” docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器 docker的宿主机是liunx系统&#xff0c;集…

第二十一 网络通信

网络通信 21.1 网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。 21.1.1 局域网与互联网 实现两台计算机的通信&#xff0c;必须用一个网络线路来连接两台计算机 21.1.2 网络协议 1.ip协议 IP是Internet Protocol的简称&#xff0c;是一种网络协议 2…

Vue项目使用Sortable.js实现拖拽功能

想了解更多-可前往 Sortable.js官网 查看组件属性及参数 安装组件&#xff08;我这里使用的是NPM安装&#xff09; npm install sortablejs --save在需要使用拖拽功能的页面中使用&#xff08;完整功能代码&#xff09; <div class"tag_box"><div class&q…

使用VS Code远程开发MENJA小游戏并通过内网穿透分享本地游戏到公网

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 推荐一个人工智能学习网站 点击跳转学习 前言 本篇教程&#xff0c;我们将通过VS Code实现远程开发MENJA小游戏&#xff0c;并通…

centos服务器安装docker和Rabbitmq

centos服务器 一 centos安装docker1 安装docker所需要的依赖包2配置yum源3查看仓库中所有的docker版本4安装docker5 设置docker为开机自启6验证docker是否安装成功 二 使用docker安装RabbitMQ拉取RabbitMQ镜像创建并运行容器 一 centos安装docker 1 安装docker所需要的依赖包 …

Python Flask-Login:构建强大的用户认证系统

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Flask-Login是Flask框架的一个扩展&#xff0c;专为构建用户认证系统而设计。它简化了用户登录和身份验证的流程&#xff0c;为开发者提供了强大而灵活的工具。本文将深入介绍Flask-Login的核心功能、基本用法和…

论文阅读:Distributed Initialization for VIRO with Position-Unknown UWB Network

前言 Distributed Initialization for Visual-Inertial-Ranging Odometry with Position-Unknown UWB Network这篇论文是发表在ICRA 2023上的一篇文章&#xff0c;本文提出了一种基于位置未知UWB网络的一致性视觉惯性紧耦合优化测距算法( DC-VIRO )的分布式初始化方法。 对于…

【算法】位运算

目录 01. 整数在内存中的存储 01.1 无符号整数的表示方法 01.2 有符号整数的表示方法 02. 移位操作符 02.1 左移操作符 1 << n 2的n次幂 02.2 右移操作符 n >> 1 和 n / 2 03. 位操作符 03.1 按位与 n & 1 和 n % 2 n >> i & 1 n &…

springboot3.0更新后,idea创建springboot2.x项目

springboot3.0更新后&#xff0c;idea创建springboot2.x项目 点击以下红色框中的按钮 出现了如下图所示&#xff1a; 到这里我们发现没有jdk8的版本&#xff0c;不要慌&#xff0c;我们可以先在这里选择21&#xff0c;然后进入到真正的项目中手动去修改这个jdk的版本&#xff0…

几分钟在Ubuntu搭建本地Emlog博客网站并发布至公网无需购买域名服务器

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总结 前言 博客作为使…

基于JavaSE+JDBC使用控制台操作的简易购物系统【源码+数据库】

1、项目简介 本项目是一套基于JavaSEJDBC使用控制台操作的简易购物系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&…

应用程序中实现用户隐私合规和数据保护合规的处理方案及建议

随着移动互联网的发展&#xff0c;用户隐私合规和数据保护合规已经成为应用开发过程中不可忽视的重要环节。为了帮助开发者实现隐私和数据保护合规&#xff0c;本文将介绍一些处理方案和建议。 图片来源&#xff1a;应用程序中实现用户隐私合规和数据保护合规的处理方案及建议 …

SQL Server数据库的备份和还原

6.2 SQL Server备份和还原 数据库管理员最担心的情况就是数据库瘫痪&#xff0c;造成数据丢失&#xff0c;而备份作为数据的副本&#xff0c;可以有 效地保护和恢复数据。本节将介绍数据备份的原因&#xff0c;备份的方式.SOL Server的恢复模式.以及备 份策略和备份设备。 6.2…

每日汇评:在周五美国非农数据公布前,黄金上行空间有限

金价周四早间在2020美元上方巩固了此前的反弹&#xff1b; 随着美债收益率趋于稳定&#xff0c;美元处于三周高点&#xff1b; 黄金价格在第四季度图表上看起来很脆弱&#xff0c;焦点转向美国非农就业数据&#xff1b; 昨日早些时候&#xff0c;由于市场情绪依然疲软&#xff…

docker安装Postgres-XL集群及踩过的N个坑

说明&#xff1a;本文是在一个机器内部用docker创建了三台centos&#xff0c;然后构建的pgxl集群 文章目录 1. 学习docker2. 创建三台centos3. 安装SSH4. 创建新用户postgres5. 关闭防火墙 关闭selinux6. 配置免密登录7. 下载并传输Postgres-XL的源码8. 配置环境变量10. 安装11…

[TKDE2020]@Multi-Source_Spatial_Entity_Linkage

论文地址&#xff1a;https://arxiv.org/pdf/1911.09016v1.pdf&#xff08;下文中提及的引用信息如未解释&#xff0c;请索引原论文末的参考文献&#xff09; 论文中提到的SSTD2019Multi-Source Spatial Entity Linkage (提取码&#xff1a;i3xt) 论文重要部分翻译 Abstract …