Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C语言】程序设计加密&解密

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

作者头像
謓泽
发布于 2023-12-08 06:07:00
发布于 2023-12-08 06:07:00
34700
代码可运行
举报
文章被收录于专栏:【C】系列【C】系列
运行总次数:0
代码可运行
  • 🚩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"开始)+偏移量⒌

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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);
	else
		SetConsoleTextAttribute(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;
		}
		else
			printf("%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)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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);
	else
		SetConsoleTextAttribute(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;
		}
		else
			printf("%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;
}

⒌代码运行视频

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

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

⒍总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
『C语言』系统日期&时间
⒈题目内容 输出系统的日期以及时间。 在本代码当中只有一个main函数将各个控制命令保存在数组当中,然后适用循环语句设置一个死循环。在该循环当中让用户输入命令指令,并且判断用户输入的命令是否和数组当中存储的命令是否相同。如果它们是相同的,则执行相对应的内容。 ⒉题目要求 用户进行某一个操作需要输入一个命令,如果命令输入错误,系统会进行提示。 当用户输入命令字符"0"会显示帮助信息。 当用户输入命令字符"1"会显示系统日期。 当用户输入命令字符"2"会显示系统时间。 当用户输入命令字符"3"会执行退出系统。 ⒊思考问题 一:需要保证程序能够一直执行下去,等待用户的命令防止主函数结束。 二:获取系统日期和系统时间。 ⒋解题思路 结构体struct tm当中的结构成员如下↓
謓泽
2022/12/12
2.7K0
『C语言』系统日期&时间
【C语言】通讯录《动态内存版本》
🚩write in front🚩    🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTOP创作者~周榜109﹣总榜883⇿全网访问量35w+🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠ 📝个人主页-謓泽的博客_CSDN博客 📃 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏-YY_謓泽的博客-CSDN
謓泽
2022/12/12
5470
【C语言】通讯录《动态内存版本》
【C语言】 扫雷游戏(保姆级的实现过程)
🚀write in front🚀    🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5→周榜31→总榜2513🏅 🆔本文由 謓泽 原创 CSDN首发🐒 如需转载还请通知⚠ 📝个人主页:打打酱油desu-CSDN博客 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏:YY_打打酱油desu-CSDN博客 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩 ---- 目录 🚀write in
謓泽
2022/12/12
1.3K0
【C语言】 扫雷游戏(保姆级的实现过程)
【C语言】通讯录《静态内存版本》
Hello🥂謓泽👋多多指教😛 HY点赞👍收藏⭐️留言📝​ ⛳通讯录✔目录 ✨前言   ✨模块化编程  🎓通讯录的逻辑实现  ✨实现通讯录の步骤 🖊创建颜色函数color()  🖊菜单界面函数menu() 🎓通讯录的定义 🖊枚举类型 🎓初始化通讯录 🎓增加通讯录的信息  🎓打印通讯录的信息  🎓删除通讯录的信息  🎓查找通讯录的信息  🎓修改指定通讯录人的信息 🎓排查通讯录当中人员的信息 ✨模块化代码实现 🖊test.c 🖊address_book.c  🖊address_book.h  ✨最后✨ --
謓泽
2022/12/12
9730
【C语言】通讯录《静态内存版本》
C语言坦克大战
//里规格:长39*2=78 (真坐标)(假坐标宽为39) 高39
紫禁玄科
2022/03/24
1.1K0
C语言坦克大战
[C语言] 猜数字小游戏「功能优化」
在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为:
謓泽
2022/12/12
5920
【C语言】三子棋游戏与多子棋 (保姆级的实现过程)
🚀write in front🚀    🔎大家好,我是泽En,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5→周榜43→总榜3343🏅 🆔本文由 泽En 原创 CSDN首发🐒 如需转载还请通知⚠ 📝个人主页:打打酱油desu-CSDN博客 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏:YY_打打酱油desu-CSDN博客 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩 ---- 目录 🚀write in f
謓泽
2022/12/12
3980
【C语言】三子棋游戏与多子棋 (保姆级的实现过程)
【程序源码】VC6下实现C语言贪吃蛇
程序源码 今天是正月初九,相信大家基本上都告别了“新年”这个词,回到了自己正常的轨道,小编也不例外,这不,又开始给大家分享好玩的了,现在过完年刚开工,不宜过度严肃,所以就给大家找了个
编程范 源代码公司
2018/04/16
1.7K0
【程序源码】VC6下实现C语言贪吃蛇
C语言课程设计 — 飞机大战
这个游戏的功能很单一,也就是“飞机大战”,哈哈哈哈。总共只有300多行代码左右,你也可以想想它会有多简陋,把它复制下来编译一下可以直接执行,需要的同学可以自取~
Gorit
2021/12/09
1.2K0
C语言socket实现文件下载[通俗易懂]
是网络编程的作业,我比较菜。。。写到定位输出,做百分比出现了问题,不显示0到100的,直接从0跳到了100。请教了下大佬。改了过来。原来是类型的问题,做出来的运算应该是float,但是我都定义的int,输出也是,大佬指出后,我好尴尬。。。犯了小错误。。。但是在这次过程也学习了一波。要加油了!!!代码写的这么乱!!! 写的是带颜色的版本,,颜色有可能会觉得妖艳,,,好吧。 编译平台是vc++6.0
全栈程序员站长
2022/09/15
1.5K0
C语言socket实现文件下载[通俗易懂]
C语言教你怎么改变字体颜色
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151557.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
3.9K0
C语言教你怎么改变字体颜色
C++项目贪吃蛇游戏笔记-C语言版
#include <stdio.h> #include <Windows.h> #include <stdlib.h> #include <time.h> #include <conio.h> #define ROW 22 //游戏区行数 #define COL 42 //游戏区列数 #define KONG 0 //标记空(什么也没有) #define WALL 1 //标记墙 #define FOOD 2 //标记食物 #define HEAD 3 //标记蛇头 #define BODY 4 //标
CtrlX
2022/09/28
1K0
俄罗斯方块c语言源代码_俄罗斯方块C语言
思路: 1.初始化界面,用一个矩阵来保存界面的每一个位置,包括颜色跟数值,数值用来区分是墙还是方块还是空格,便于运行时的判断。
全栈程序员站长
2022/11/17
3.6K0
俄罗斯方块c语言源代码_俄罗斯方块C语言
【C语言】贪吃蛇游戏的实现(一)[通俗易懂]
(注意:本代码是在VC++6.0环境下编译的,在其他环境如codeblocks下运行可能会产生意想不到的问题,请尽量使用VC。至于为什么要使用VC编译,哦,我亲爱的朋友,这只有上帝才知道)
全栈程序员站长
2022/09/05
1.3K0
【C语言】贪吃蛇游戏的实现(一)[通俗易懂]
模拟猜单词游戏
模拟实现猜单词游戏,纯模拟,不涉及图形界面,注释很详细,虽然本人代码写得丑,但是希望可以给大家提供帮助 #include<algorithm> #include<cstdlib> #include<cstring> #include<fstream> #include<ctime> #include<cmath> #include<iomanip> #include<windows.h> using namespace std; int times=10;//全局变量,默认猜测次数 typedef s
triplebee
2018/01/12
6700
c语言实现图书管理系统创新_c语言图书管理系统源代码
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/18
1.9K0
c程序设计,贪吃蛇程序是什么_C语言编写贪吃蛇
思路:一行一行的输出,输出完一行就换行继续输出,直到输出完边框部分。 第一步:先输出第一行,输完第一行进行换行。(这里@代表◼)
全栈程序员站长
2022/11/17
2.1K0
C语言实现简单贪吃蛇代码
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141348.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
2.4K0
C语言实现简单贪吃蛇代码
贪吃蛇(C语言实现)
贪吃蛇游戏当中蛇的移动速度可以进行调整,动图当中把速度调得较慢(速度太快导致动图上蛇身显示不全),下面给出的代码当中将蛇的速度调整到了合适的位置,大家可以试试。
全栈程序员站长
2022/08/24
2.2K0
贪吃蛇(C语言实现)
C语言怎么改变窗口的字体颜色和背景颜色?
如果学C语言久了,难免会对弹出的黑窗口感到厌烦,那这时候如果能改一下黑窗口的背景颜色和字体颜色,也许会给自己一个好一点的心情。废话不多说,现在开始教你怎么简单地改变窗口的字体颜色和背景颜色。
全栈程序员站长
2022/09/06
6.4K0
C语言怎么改变窗口的字体颜色和背景颜色?
相关推荐
『C语言』系统日期&时间
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验