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,一经查实,立即删除!

相关文章

菜鸟-es6

这里就不在唠叨浏览器对es6的支持跟转码器了&#xff0c;稍微百度一下就ok let and const 变量 and 常量 什么是变量,什么是常量 - 都是存储数据的容器, - 变量》即意思就是程序运行中可以发生变化的,- 常量》即程序运行中不可以发生改变&#xff0c;- 注意&#xff1a;常量…

阿帕奇退出java_java+tomcat+apache安装整合,启动/关闭,添加开机启动服务

安装java1.8#yum update 服务器更新源码包#rpm -qa |grep -E ^open[jre|jdk]|j[re|dk] 搜索任何版本的已安装JDK组件java-1.8.0-openjdk-headless-1.8.0.60-2.b27.el7_1.x86_64pygobject2-2.28.6-11.el7.x86_64pygobject3-base-3.8.2-6.el7.x86_64java-1.8.0-openjdk-1.8.0…

Spring Boot中如何干掉if else

Spring Boot中如何干掉if elsehttp://www.ciphermagic.cn/spring-boot-without-if-else.html 转载于:https://www.cnblogs.com/tyk766564616/p/11089133.html

java 抽象类与接口理解

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

dreambackend.java_【AndroidTV】如何自定义屏保、更改屏保时长

目录目录系统屏保源码有哪些在设置中显示的屏保选项有哪些屏保选项是如何获得的多久出现屏保修改方法我的应用项目需求处理方式遇到一个诡异的问题系统屏保源码有哪些如果要自定义屏保可以参考这里的源码&#xff0c;清晰易懂&#xff0c;比网上教程好屏保源码位置BasicDreampa…

模块初识

1.模块 模块的定义与分类 一个模块就是一个py文件.这个魔铠存储很多相似的功能,相似的函数集合体分类 内置模块,标准库,Python自带的,times,os,sys,等等200多种第三方库(模块),各种大神写的一些模块,通过pip install....安装,有6000多种自己写的模块,自定义模块2.import # impo…

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

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

牛客网在线编程java_NowCoder

com.adamjwh.pratice.offer.FindInArrays二维数组中的查找com.adamjwh.pratice.offer.ReplaceSpace替换空格com.adamjwh.pratice.offer.PrintList从头到尾打印链表com.adamjwh.pratice.offer.ReConstructTree重建二叉树com.adamjwh.pratice.offer.MakeQueueWithStack用两个栈实…

质量大国-学习概要

问题场景&#xff1a;英国 不断重新定义度量一码历史故事&#xff1a;冷兵器 206年 长平之战 度量衡商鞅统一度量衡 秦国 质量 0.83毫米的箭头 秦国的统一度量衡带来的巨大收益。 1&#xff0c;1791 巴黎 法国科学院 科学革命要为完美的社会提供基点 创建计量体系 孔多塞 重新定…

join的简单总结

BAT面试题&#xff1a;现在有T1、T2、T3三个线程&#xff0c;你怎样保证T2在T1执行完后执行&#xff0c;T3在T2执行完后执行&#xff1f; 这个线程问题通常会在第一轮或电话面试阶段被问到&#xff0c;目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单&#xff0c;…

python numpy矩阵索引_python – Numpy中的矩阵索引

索引后查看形状&#xff1a;In [295]: Anp.matrix([1,2,3])In [296]: A.shapeOut[296]: (1, 3)In [297]: A[0]Out[297]: matrix([[1, 2, 3]])In [298]: A[0].shapeOut[298]: (1, 3)这种行为的关键是np.matrix总是2d.所以即使你选择一行(A [0,&#xff1a;]),结果仍然是2d,形状(…

Activity的呼叫转移*(3个Activity之间的跳转)

Redirection的意思就是“呼叫转移&#xff0c;重寄”的意思 我们也许会再程序开发中遇到这种情况&#xff0c;需要从一个Activity&#xff08;A&#xff09;跳转到另一个Activity&#xff08;B&#xff09;&#xff0c;当在这个Activity&#xff08;B&#xff09;中处理完一些操…

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

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

python webservice接口测试传参数_Python3 webservice接口测试方法是什么

Python3 webservice接口测试方法是什么发布时间&#xff1a;2020-06-23 14:07:46来源&#xff1a;亿速云阅读&#xff1a;92作者&#xff1a;清晨不懂Python3 webservice接口测试方法是什么&#xff1f;其实想解决这个问题也不难&#xff0c;下面让小编带着大家一起学习怎么去解…

zabbix4.2 系列(二):agent配置

zabbix-agent&#xff1a; 分为主动模式和被动模式&#xff0c;均在配置文件实现&#xff08;主动模式和被动模式可同时设置&#xff09;&#xff1a; vim /etc/zabbix/zabbix_agentd.conf Server192.168.18.154 &#xff08;用于被动模式&#xff0c;允许哪台服务器可以…

java form 对象 一对一_java-双向一对一地“对象引用了一个未保存...

我有一个简单的一对一关系&#xff1a;>为每个实体单独的DAO.>事务由Spring管理.PersonDao personDao ctx.getBean(PersonDao.class, "personDaoImpl");VehicleDao vehicleDao ctx.getBean(VehicleDao.class, "vehicleDaoImpl");Vehicle vehicle …

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…