用异或操作,实现简单的密码加解密处理

原创 2016年08月28日 23:55:07

用异或操作,实现简单的密码加解密处理


 异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,

其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1


可以简单理解它为一个不进位的二进制加法:

0 + 0 = 0

1 + 1 = 0  (相当于高位的1 没进位)

1 + 0 = 1

它有如下性质:


1、交换律

2、结合律(即(a^b)^c == a^(b^c))

3、对于任何数x,都有x^x=0,x^0=x

4、自反性 A XOR B XOR B = A xor  0 = A

在此处,就利用了异或的自反性,与一个Key进行异或进行加密,再次异或实现解密处理

#include <stdio.h>
#include <string.h>

int nKey = 1899;

int main()
{
	char psw[] = "ae+65&5汉2";
	char* pTemp = psw;
	printf("加密前的密码: %s\n", psw);
	for (int i = 0; i< strlen(psw); i++)
	{
		*pTemp++ ^= nKey;
	}
	printf("加密后的密码: %s\n", psw);

	pTemp = psw;
	for (int i = 0; i < strlen(psw); i++)
	{
		*pTemp++ ^= nKey;
	}
	printf("解密的密码: %s\n", psw);
	return 0;
}

\

类别:   C/C++教程, 教程 Edit

http://qzher.com/?p=376

版权声明:更多文件,请访问 qzher.com 致力于良心IT培训,深圳QQ群:326023167

C语言:用异或^实现数据加密

“^”的意思是:当两个操作数对应位不相同时结果的相应位即为一,否则为零。当然,这里的对应位是指二进制的位。 1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 = 1 0 ^ 0 = 0 用“^”...
  • u013485792
  • u013485792
  • 2016年08月04日 19:50
  • 2581

简单异或加密(C语言)

/**  * 加密(解密), 源数据必须是4字节对齐的数据  * src 源数据,dst 加密(解密)后的数据,size 源数据的大小,factor 加密因子  */ BOOL Encrypt...
  • zhongshansubor
  • zhongshansubor
  • 2011年08月17日 16:44
  • 2170

使用异或进行简单的密码加密(JAVA实现)

public class Asda { public static void main(String[] args) { System.out.println(setEncr...
  • baidu_18607183
  • baidu_18607183
  • 2016年02月19日 16:43
  • 981

C语言实现视频异或加/解密

C语言实现异或加/解密的原理异或原理很简单,异或一次为加密,再异或一次就成了解密了。看下代码/** * 加密/解密文件 * * @param sourcefile 要加密/解密的文件名...
  • king_jie0210
  • king_jie0210
  • 2017年06月23日 13:50
  • 465

如何利用异或运算进行简单加密解密

利用“^”异或运算对字符串进行加密 思路:1.先创建字符串输入的Scanner;2.通过char[] array = password.toCharArray();// 获取字符数组;3.遍历字...
  • shehun11
  • shehun11
  • 2014年07月14日 02:15
  • 3858

Java简单的加密解密算法,使用异或运算

Java简单的加密解密算法,使用异或运算 Java代码   package cn.std.util;      import java.nio.charset.Charse...
  • a1049107922
  • a1049107922
  • 2016年09月02日 14:28
  • 3714

php异或运算制作加密解密方法

header("content-type:text/html;charset=utf8");     function xor_enc($str,$key)     {         $cry...
  • shenpengchao
  • shenpengchao
  • 2016年07月07日 14:01
  • 665

c#异或加密

public static string EnCrypt(string val)     {         Encoding ascii = Encoding.ASCII;         b...
  • xxl1988922
  • xxl1988922
  • 2011年08月26日 18:13
  • 496

利用异或进行密码加密

/* * 程序功能: * 简单的异或进行加密 * */ package day11yue3; import java.util.*; public class Example { pub...
  • zouyang2014
  • zouyang2014
  • 2017年11月03日 20:20
  • 63

iOS开发之 异或加密的原理详解

异或的运算方法是一个二进制运算: 1^1=0 0^0=0 1^0=1 0^1=1 两者相等为0,不等为1. 对于一个字符来说,都可以用二进制码来表示.如A:01000001 字符的异或就是对每一位...
  • zhonggaorong
  • zhonggaorong
  • 2016年06月14日 11:58
  • 1731
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用异或操作,实现简单的密码加解密处理
举报原因:
原因补充:

(最多只允许输入30个字)