最初的密码程序是在Hirst First c里面看到的,大概内容如下:
对待加密的字符串的每一个字符和某个数值进行一次按位异或得到密文,再进行一次按位异或得到明文。

补充知识:按位异或的结果是“同位得1,异位得0”。
比如数值2和数值1进行按位异或的情况如下:
2对应的二进制表示:10
1对应的二进制表示:01
2^1的结果最终表示:00

这个时候再把2^1的结果和1进行按位异或
01
00
10

原文的加密程序如下:

#include<stdio.h>

//加密解密程序
void encrypt(char *message)
{
while (*message) {
//对message的每一个字符和31进行按位异或
*message = *message ^ ;
message++;
}
} int main()
{
char s[] = "Hello qizexi"; //运行一次:进行加密
encrypt(s);
printf("加密:%s\n", s);
//再运行一次是解密
encrypt(s);
printf("解密:%s\n", s); return ;
}

encrypt1.c

既然可以和某个数值进行按位异或进行加密,那么是否可以和某个字符串进行按位异或呢,答案是可以。
原理如下:待加密的密文的每一个字符和一个密匙(任意字符串) 的每一个字符分别进行一次按位异或进行加密解密即可。
最终按密匙加密的程序如下:

#include<stdlib.h>
#include<string.h>
#include<stdio.h> //加密解密程序
void encrypt(char *message, const char *key)
{
int i;
int len = strlen(key);
while (*message) {
//对message的每一个字符和31进行按位异或
for (i = ; i < len; i++) {
*message = *message ^ (int)key[i];
}
message++;
}
} int main()
{
//密文
char s[] = "Hello qizexi";
//密匙
char *key = "qizexi@163.com"; //运行一次:进行加密
encrypt(s, key);
printf("加密:%s\n", s);
//再运行:进行解密
encrypt(s, key);
printf("解密:%s\n", s); return ;
}

encrypt2.c

怎么样是不是粉简单,感觉在你的项目中引入这个程序吧。

linux c最简单的加密程序的更多相关文章

  1. Python基础教程3——教你用Python做个简单的加密程序(还基础什么呀,直接来练习吧,带源码)

    因为发现基础教程我之前推荐的那个网站就已经很完善了,就不重复写了,所以本汪来一起做练习吧. 一.加密原理 记得当时我学c++的时候,学到输入输出流的时候,当时王老师就教我们写了一个小的加密程序,所以这 ...

  2. Linux终端下简单的登录程序 密码不回显

    在Linux进行登录是输入密码不会被回显,所以我也写了个简单的登入程序,使得在输入密码时不再进行回显. #include <stdio.h> #include <stdlib.h&g ...

  3. Linux环境下部署完JDK后运行一个简单的Java程序

    前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version&qu ...

  4. Linux系统学习笔记之 1 一个简单的shell程序

    不看笔记,长时间不用自己都忘了,还是得经常看看笔记啊. 一个简单的shell程序 shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤 第一步: ...

  5. 【Java】Swing+IO流实现一个简单的文件加密程序(demo版)

    留着参考 EncrytService package com.my.service; import java.io.File; import java.io.FileInputStream; impo ...

  6. Ubuntu上安装和使用SSH,Xming+PuTTY在Windows下远程Linux主机使用图形界面的程序

    自:http://blog.csdn.net/neofung/article/details/6574002 Ubuntu上安装和使用SSH  网上有很多介绍在Ubuntu下开启SSH服务的文章,但大 ...

  7. Linux curl使用简单介绍

    在两台新搬迁的微信服务器上执行命令: curl -H "Content-Type: application/json" -d '{"partner_no":&q ...

  8. posix 线程(一):线程模型、pthread 系列函数 和 简单多线程服务器端程序

    posix 线程(一):线程模型.pthread 系列函数 和 简单多线程服务器端程序 一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属 ...

  9. Linux/Ubuntu下 静态编译Qt程序

    一般情况下,我们用Qt编译出来的程序是要依赖于系统Qt库的,也就是这个程序移到别的没有安装Qt库的系统上是不能使用的.会提示缺少……库文件之类的错误.这就是动态编译的结果. 但是如果我们想编译一个程序 ...

随机推荐

  1. 《University Calculus》-chaper8-无穷序列和无穷级数-比值审敛法

    在分析等比级数的过程中,我们发现对于q<1的等比级数是收敛的,它表示级数每一项与它前一项的比值小于1,我们能否将这种方法推广起来用于一般级数的审敛呢? 从极限的定义出发:

  2. hive 显示表分区真实对应数据路径

    desc formatted l_ad_yclick_html partition (datecol='20160118');

  3. Redis sort命令

    http://www.cnblogs.com/linjiqin/archive/2013/06/14/3135921.html 1.添加 投票选项到 redis的  List 和HashMap lis ...

  4. sql第一课笔记

    这是我看了imooc的视频教程之后重新写的笔记. 虽然之前也是学习过SQL Server数据库,但是也是忘记得差不多了.现在重新捡起来,安装一次数据库练习,使用的是mysql. 第一课是最简单的创建, ...

  5. Java多态性举例说明

    Java多态性的概念也可以被说成“一个接口,多个方法”. (一)相关类 class A ...{ public String show(D obj)...{ return ("A and D ...

  6. log4j 日志的初始化

    log4j 不指定时,log4j 会默认进行初始化,如果想要制定log4j.properties的位置时,可以进行指定: PropertyConfigurator.configure(): 参数里面加 ...

  7. scala中常用但其他语言不常见的符号含义

    本文旨在介绍Scala在其他语言中不太常见的符号含义,帮助理解Scala Code. 随着我对Scala学习的深入,我会不断增加该篇博文的内容. 修改记录 ----2016.11.23  新增scal ...

  8. Strust2 <c:forEach> 循环控制标签

    <c:forEach>为循环控制标签 语法:迭代一集合对象中的所有成员 <c:forEach [var="varName"] items="collec ...

  9. 异步tcp通信——APM.ConsoleDemo

    APM测试 俗话说麻雀虽小,五脏俱全.apm虽然简单,但是可以实现单机高性能消息推送(可以采用redis.kafka等改造成大型分布式消息推送服务器). 测试demo: using System; u ...

  10. 重装系统时,将MBR分区转为GPT 分区

    摘要 很多同学在重装系统的时候,或多或少都遇到过这样的问题:镜像文件没有问题,软碟通刻录也没有问题,但偏偏就在选择安装系统盘盘符的时候,跳出对话框,提示:Windows无法安装到这个磁盘,选中的磁盘具 ...