c语言实现xor加密
异或运算:^
定义:它的定义是:两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。
特点:如果对一个值连续做两次 XOR,会返回这个值本身。
^
// 第一次异或后结果:0101
^
// 第二次异或后结果:1010
上面代码中,原始值是1010,再任意选择一个值(上例是1111),做两次 XOR,最后总是会得到原始值1010。这 在数学上是很容易证明的。
加密应用:
XOR 的这个特点,使得它可以用于信息的加密。
message XOR key // cipherText
cipherText XOR key //message
上面代码中,原始信息是message,密钥是key,第一次 XOR 会得到加密文本cipherText。对方拿到以后,再用 key做一次 XOR 运算,就会还原得到message
c语言实现:
#include <stdio.h>
#define key 0x86
int main(int argc, char *argv[])
{
char text[];
int i,j;
for(i=;i<;i++){
text[i]=getchar();
if(text[i]=='\n'){
text[i]='\0';
break;
}
}
for(j=;j<i;j++){
text[j]=text[j] ^ key;
}
puts(text); for(j=;j<i;j++){
text[j]=text[j] ^ key;
}
puts(text); return ;
}
或者:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define KEY 0x86
int main()
{
char p_data[] = {"Hello World!"};
char Encrypt[]={},Decode[]={};
int i;
for(i = ; i < strlen(p_data); i++)
{
Encrypt[i] = p_data[i] ^ KEY;
}
for(i = ; i < strlen(Encrypt); i++)
{
Decode[i] = Encrypt[i] ^ KEY;
} printf("Initial date: %s\n",p_data);
printf("Encrypt date: %s\n",Encrypt);
printf("Decode date: %s\n",Decode); return ; }
c语言实现xor加密的更多相关文章
- XOR 加密简介
本文介绍一种简单高效.非常安全的加密方法:XOR 加密. 一. XOR 运算 逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为"异或运算". 它的定义是:两个 ...
- 使用Z3破解简单的XOR加密
使用Z3破解简单的XOR加密 翻译:无名侠 原文地址: https://yurichev.com/blog/XOR_Z3/ 如果我们有一段用简单XOR加密过的文本,怎么寻找密钥呢?密钥的长度可能很长, ...
- XOR 加密
XOR 是一个神奇的运算符, 观察它的真值表, 很容易得到以下结论: 假设现有 a , b 变量, 则 a ^ 0 == a a ^ 0xff == ~a (取反加1等于作为补码的a的真值的相反数的补 ...
- java php c# 三种语言的AES加密互转
java php c# 三种语言的AES加密互转 最近做的项目中有一个领取优惠券的功能,项目是用php写得,不得不佩服,php自带的方法简洁而又方便好用.项目是为平台为其他公司发放优惠券,结果很囧的是 ...
- Java 语言实现 MD5 加密
Java 语言实现 MD5 加密 背景说明 在实际项目中,为了安全性考虑,经常要求账号密码是以加密后的密文形式,保存到数据库中. 这样,即使有人获取到了数据库中的密文密码,也不知道明文密码信息是什么, ...
- Java语言实现 Base64 加密 & 解密
Java语言实现 Base64 加密 & 解密 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法. Base64 ...
- C语言的AES加密
C语言的AES加密 稍微封装了几个函数 方便使用 #if 1 #include <stdio.h> #include <stdlib.h> #include <strin ...
- 通过java语言实现MD5加密
通过java语言实现MD5加密public static String getMd5(String str) { try { MessageDigest md5 = MessageDigest.get ...
- xor加密的python实现
#md5加密 import hashlib hash_md5 = hashlib.md5() x=input("Please input your text:") print( & ...
随机推荐
- 解决 weblogic poi3.9 报错 a different type with name "javax/xml/namespace/QName"
解决 java.lang.LinkageError: loader constraint violation: loader (instance of weblogic/utils/classload ...
- java 获取文件后缀名(文件类型)
java 获取文件后缀名(文件类型) CreateTime--2018年5月23日09:16:31 Author:Marydon // 获取文件名的后缀名(文件类型) String oldFile ...
- python模块之HTMLParser之穆雪峰的案例(理解其用法原理)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser之穆雪峰的案例(理解其用法原理) #http://www.cnblog ...
- 编程填空:左边i位取反
总时间限制: 1000ms 内存限制: 1024kB描述写出函数中缺失的部分,使得函数返回值为一个整数,该整数的左边i位是n的左边i位取反,其余位和n相同请使用[一行代码]补全bitManipulat ...
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part5
<数字图像处理原理与实践(MATLAB版)>一书之代码Part5 本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part5.辑录该书第225至第280页之代 ...
- ios中webview的高级用法(二)
框架: webview与js的通信框架 #import "MJViewController.h" #import "MBProgressHUD+Add.h" ...
- 请问实现MVC的框架有哪些,实现持久化操作的框架有哪些,还有类似于spring整合的框架又有哪些
2011-04-10 我知道MVC框架有struts.webWork; 持久化的有hibernate.ibatis,而进行整合的我只知道spring了 ------------------- 表示层框 ...
- 转载:kafka c接口librdkafka介绍之二:生产者接口
转载:from:http://www.verydemo.com/demo_c92_i210679.html 这个程序虽然我调试过,也分析过,但是没有记录笔记,发现下边这篇文章分析直接透彻,拿来借用,聊 ...
- Nginx Rewrite正则表达式案例
前两天简单整理了下Nginx的URL Rewrite基本指令,今天谈谈Nginx Rewrite的location正则表达式. 1.Nginx Rewrite 基本标记(flags) last 相当于 ...
- mysqlsla快速入门
小强软件测试,因为不是天生丽质,所以必须天生励志. 性能.python自动化班长期招生,咨询QQ:2083503238 官网:http://xqtesting.sxl.cn QQ群:229390571 ...