C语言文字加密程序的实现

前言:当今社会是一个信息社会,你的个人信息和聊天记录极有可能被别有用心的人时时刻刻监视着,那么你想不想实现专属于两个人或一个小圈子的人在社交软件上的交流不被任何其他人读懂呢?下面就给大家提供一个原理极其简单程序极其容易实现的C语言文字加密小程序的实现算法。

原理:ASCLL码的加减乘除运算。举一个最简单的例子,从键盘输入一行字符"LANGUAGE",将所有字符的ASCLL码加1后再打印出来就变成了"MBOHVBHF",将所有字符的ASCLL码加2,则打印出来是"NCPIWCIG",试问从打印出来的字符串的字里行间谁还可以一眼就看出最初想要传达的信息是"LANGUAGE"?同理,将加密文字所有字符的ASCLL码减1再打印出来就可以实现对加密文字的翻译,例如将"MBOHVBHF"中每个字符的ASCLL码都减1再打印出来就可以还原出"LANGUAGE"。

如果你足够聪明,可以看出"MBOHVBHF"是"LANGUAGE"中的所有字母在英文字母表里的顺序后移一位形成的、"NCPIWCIG"是"LANGUAGE"中的所有字母在英文字母表中的顺序后移两位形成的,那么请大家再来看一下汉字的情况。

我在键盘上录入了"今天晚上我不回家吃饭了",将这串字符的ASCLL码全部加1,打印出来是这样的"掘晚晤市嫌臣假接凑负绿"。怎么样,哈哈哈,是不是看完后丈二和尚摸不着头脑?所以,用这种算法实现对汉字的加密和翻译绝对隐蔽!汉字在计算机中的编码比较复杂,一个汉字在Windows 10系统下的CodeBlocks编译器里占2个字符的位置,我记得我有做过测试,在Cent OS Linux系统下占3个字符的位置。然而不管一个汉字占几个字符的位置,对每个字符的ASCLL码做加减乘除的运算和逆运算就可以实现对文字的加密和翻译。

下面向大家展示一下源代码(加密算法为将所有字符的ASCLL码加1,翻译算法为将所有字符的ASCLL码减1):

头文件部分:

//Trans.h
#ifndef TRANS_H_INCLUDED
#define TRANS_H_INCLUDED#include <stdio.h>
#include <stdlib.h>
#include <string.h>void creat(char txt[])
{
for(int i=0;i<strlen(txt);i++)
{
txt[i]+=1;
}
printf("生成的加密文字为:%s\n",txt);
}
void trans(char txt[])
{
for(int i=0;i<strlen(txt);i++)
{
txt[i]-=1;
}
printf("解密后文字为:%s\n",txt);
}#endif // TRANS_H_INCLUDED
主函数部分:#include "Trans.h"void main()
{
char txt[1024];
int choice;printf("---------------欢迎使用译码机!---------------\n");
printf("****************************************************\n");
printf("生成加密文字请输入1 翻译加密文字泣请输入2\n");
printf("退出程序请输入0\n");while(1)
{
printf("****************************************************\n");
printf("请输入您的选择:");
scanf("%d",&choice);
fflush(stdin);
switch(choice)
{
case 1:
printf("请输入文字:");
gets(txt);
creat(txt);
break;
case 2:
printf("请输入加密文字:");
gets(txt);
trans(txt);
break;
case 0:
printf("退出成功!\n");
exit(0);
default:
printf("您的输入有误,请重新输入!\n");
}
system("pause");
}
}

 

下面向大家展示一下加密与翻译的效果:

 

 

思考与提高:仅仅将所有字符的ASCLL码加1就实现对文字信息的加密了,会不会很容易被破译呢?请恕博主我不是密码学专家,这一点我无法回答,但是直观感觉这样加密确实有点简单。那么我们就可以对字符进行多种更为复杂的处理,比如给所有字符加上一个正负变换的数列、给所有字符加上斐波那契数列等。总之,直观感觉就是越复杂越不容易被破译。

下面向大家展示一下给所有字符加上一个正负变换的数列的加密算法的源代码:

头文件部分:

//Trans.h
#ifndef TRANS_H_INCLUDED
#define TRANS_H_INCLUDED#include <stdio.h>
#include <stdlib.h>
#include <string.h>void creat(char txt[])
{
int f=1;
for(int i=0;i<strlen(txt);i++)
{
txt[i]+=f;
f=-f;
}
printf("生成的加密文字为:%s\n",txt);
}
void trans(char txt[])
{
int f=-1;
for(int i=0;i<strlen(txt);i++)
{
txt[i]+=f;
f=-f;
}
printf("解密后文字为:%s\n",txt);
}#endif // TRANS_H_INCLUDED

 

主函数部分主要是用来调试的,与上面那个简单加密算法的主函数部分相同。

下面向大家展示一下使用这种复杂加密算法加密与翻译的效果:

 

转载于:https://www.cnblogs.com/kevin860/p/11084942.html

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

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

相关文章

java 抽象类与接口理解

2019独角兽企业重金招聘Python工程师标准>>> 在java 中抽象类是implements [等有时间了补充] 转载于:https://my.oschina.net/kuchawyz/blog/1929094

算法:把数组排成最小的数

* Description 把数组排成最小的数* 问题&#xff1a;输入一个正整数数组&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。* 例如输入数组{3&#xff0c;32&#xff0c;321}&#xff0c;则打印出这三个数字能排成的最小数字为…

深度解析数据分析、大数据工程师和数据科学家的区别

数据越来越多的影响并塑造着那些我们每天都要交互的系统。不管是你使用Siri&#xff0c;google搜索&#xff0c;还是浏览facebook的好友动态&#xff0c;你都在消费者数据分析的结果。我们赋予了数据如此大的转变的能力&#xff0c;也难怪近几年越来越多的数据相关的角色被创造…

RabbitMQ 入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)

发布&#xff0f;订阅 在上篇第二部分教程中&#xff0c;我们搭建了一个工作队列。每个任务之分发给一个工作者&#xff08;worker&#xff09;。在本篇教程中&#xff0c;我们要做的之前完全不一样——分发一个消息给多个消费者&#xff08;consumers&#xff09;。这种模式被…

Proxmox VE 安装、配置、使用之第二章 Proxmox VE 的安全性

第一章 Proxmox VE 的安全性一、 角色及权限图2-1-1二、 Root 的密码安全性把 Root 的实际密码给出去, 在任何系统都是不符合安全规范的!所以在 Linux 里面, 最好把有需要 root 权限的使用者 放到 sudoers 的群组.# sudo usermod -a -G sudo testuserPVE 的权限设定方式 是由 u…

java allocate_Java中volatile关键字的最全总结

一、简介volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制&#xff1a;同步块(或方法)和 volatile 变量&#xff0c;相比于synchronized(synchronized通常称为重量级锁)&#xff0c;volatile更轻量级&#xff0c;因为它不会引起线程上下文的切换和调…

缩放手势 ScaleGestureDetector 源码解析,这一篇就够了

其实在我们日常的编程中&#xff0c;对于缩放手势的使用并不是很经常&#xff0c;这一手势主要是用在图片浏览方面&#xff0c;比如下方例子。但是&#xff08;敲重点&#xff09;&#xff0c;作为 Android 入门的基础来说&#xff0c;学习 ScaleGestureDetector 的使用&#x…

postgres的数据库备份和恢复

备份和恢复 一条命令就可以解决很简单: 这是备份的命令&#xff1a; pg_dump -h 127/0.0.1 -U postgres databasename > databasename.bak 指令解释&#xff1a; pg_dump 是备份数据库指令&#xff0c;164.82.233.54是数据库的ip地址&#xff08;必须保证数据库允许外部访…

java如何实现封装_java如何实现封装

Java中类的封装是如何实现的封装是将对象的信息隐藏在对象内部&#xff0c;禁止外部程序直接访问对象内部的属性和方法。 java封装类通过三个步骤实现&#xff1a; (1)修改属性的可见性&#xff0c;限制访问。 (2)设置属性的读取方法。 (3)在读取属性的方法中&#xff0c;添加对…

php token 验证,PHP如何实现Token验证

PHP如何实现Token验证首先将Token进行解析&#xff1b;然后根据解析出来的信息部分验证是否过期&#xff0c;如果未过期再将解析出的信息部分进行加密&#xff1b;最后将加密出来的数据和解析出来签名进行比对&#xff0c;如果相同则验证成功。示例代码&#xff1a;<?php f…

值得一用的Windows软件

该清单仅本人使用后所作推荐&#xff0c;可能会比较主观&#xff0c;所以仅供参考哈。可能某些软件链接会失效&#xff0c;可以自行百度搜索下载即可。 杀软 火绒安全&#xff1a;国内杀毒软件的一股清流&#xff0c;界面简洁&#xff0c;无推广。现在已经开启了 5.0 公测&…

Python字符串处理全攻略(四):常用内置方法轻松掌握

文章目录 引言Python字符串常用内置方法切片功能介绍语法示例注意事项 str.isalpha()功能介绍语法示例注意事项 str.isdigit()功能介绍语法示例注意事项总结 str.isalnum()功能介绍语法示例注意事项总结 str.isupper()功能介绍语法示例注意事项 islower()功能介绍语法示例注意事…

php空间限制磁盘限额,ORA-01536:超出表空间XXXX的空间限额

问题描述&#xff1a;在FMIS2600用户下进行某个DDL或DML操作时&#xff0c;提示&#xff1a;ORA-01536&#xff1a;超出表空间FMIS2600 的空间限额 或者 ORA-01950: 对表空间/*******************ORA-01536&#xff1a;超出表空间XXXX的空间限额*******************//*********…

01爬虫基本原理及Requests库下载

一、爬虫基本原理 1.什么是爬虫 ​ 爬虫就是爬取数据 2.什么是互联网&#xff1f; ​ 就是由一堆网络设备&#xff0c;把一台台的电脑互联在一起 3.互联网建立的目的 ​ 数据的传递和数据共享 4.什么是数据&#xff1f; ​ 例如&#xff1a; ​ 电商平台的商业信息&#xff08;…

php 怎么实现收藏功能,php收藏功能如何实现

php收藏功能如何实现php收藏功能的实现方法&#xff1a;首先创建好数据库表 &#xff1b;然后创建前台代码&#xff0c;实现登录界面&#xff1b;接着通过html实现收藏样式&#xff1b;最后使用php进行后台处理即可。推荐&#xff1a;《PHP视频教程》这是数据库表话不多说上代码…

quartus FIR仿真笔记

第一章&#xff1a; 最近百度了一些fir滤波器的资料&#xff0c;都没有自己想要的。容我吐槽一大段文字> 在旧版的quartus中&#xff0c;比如13.0&#xff0c;有两个fir滤波器的选项&#xff0c;如下所示&#xff1a; 网上很多都是讲不带II的那个&#xff0c;而在新版的quar…

git常用命令及分支简介

2019独角兽企业重金招聘Python工程师标准>>> 1、git基本命令 1&#xff09;git add 将想要快照的内容写入缓存区 2&#xff09;git status -s "AM" 状态的意思是&#xff0c;这个文件在我们将它添加到缓存之后又有改动 3&#xff09;git commit -m 第一次…

企业私有云部署im,视频服务

1&#xff0c;安全问题 2&#xff0c;员工跨地域 3&#xff0c;内部视频培训 考勤申请&#xff0c;设备借用申请 名片申请 会议室预订 审批 内网&#xff0c;局域网部署 Android源码 https://github.com/starrtc/android-demo ios源码https://github.com/starrtc/ios-demo

Leetcode怎么调试java代码,在Clion上调试LeetCode代码

在Clion上调试LeetCode代码在leetcode上做题调试起来总有些不方便&#xff0c;所以查阅了一些资料后&#xff0c;按以下配置&#xff0c;自我感觉效率还行&#xff0c;分享给大家。祝大家刷题愉快。并附上自己整理的leetcode400题题表。Leetcode400题&#xff1a;notion地址依赖…

来入门一下kotlin吧

Kotlin是什么&#xff1f; Kotlin是一种在java虚拟机上运行的静态类型的编程语言&#xff0c;被称之为 Android 世界的Swift&#xff0c;由 JetBrains 设计开发并开源。 Kotlin的优势&#xff01; Kotlin可以编译成java字节码&#xff0c;也可以编译成JavaScript。方便在没有ja…