内容简介:异或加密是一种加密算法,利用了计算机中的异或计算,异或计算(符合记为 ‘^’)的原理是,相同为 0,不同为 10 ^ 0 = 01 ^ 1 = 0
什么是异或加密
异或加密是一种加密算法,利用了计算机中的异或计算,异或计算(符合记为 ‘^’)的原理是,相同为 0,不同为 1
0 ^ 0 = 0
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
由于 1 ^ 0 或 0 ^ 1 的结果都为 1,因此不能直接由结果 1 推出原来的明文到底是 0 还是 1,达到保护明文的目的。
异或加密特性
异或加密具有以下特性(引自维基百科):
简单异或密码(英语:simple XOR cipher)是密码学中一种简单的加密算法,它按照如下原则进行运算:
1. A ^ 0 = A
2. A ^ A = 0
3. (A ^ B) ^ C = A ^ (B ^ C)
4. (B ^ A) ^ A = B ^ 0 = B
从原理 4 可得,对同一个明文 B,使用密钥 A 对其进行两次异或运算,可得到明文 B,我们正是利用了这一特性,进行实现加密解密
异或加密算法
异或加密算法由 3 部分组成,分别是
- 明文
- 密钥
- 异或运算规则
流程是通过遍历明文的每一个字符,并按照异或运算规则从密钥中取出一个或多个字符,与明文的字符进行异或运算,将异或的结果合成一个新的字符串,但是由于异或运算的特性,有可能异或运算后为一个不可见字符,就可能无法通过字符串传递密文了,因此这里引入了 base64 编码,因为 base64 编码后的字符串都是可见字符,关于 base64 编码的知识详见Js Base64 编码
所以加密算法变成:
- 明文与密钥按照异或运算规则进行异或运算,产生密钥
- 将得到的密文进行base64 编码,最后返回
而解密算法相应的变成:
- 将密文进行 base64 解码,得到原始的密文
- 将密文按照相同的异或运算规则与密文进行异或,得到明文
Power shell 实现
可以通过改变变量 key 的值更换加密密钥
$Script:key = "3567d8cndkei%*x9(-32[]KDF(32222" function Decode($cyphertext) { $keyArray =[System.Text.Encoding]::ASCII.GetBytes($key) $encodedArray= [System.Text.Encoding]::ASCII.GetBytes([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($cyphertext))) $plainText = "" $keyposition = 0 $encodedArray | foreach-object -process { $plainText += [char]($_ -bxor $KeyArray[$keyposition % $KeyArray.Length]) $keyposition += 1 } return $plainText } function Encode($plainText) { $KeyArray= [System.Text.Encoding]::ASCII.GetBytes($key) $cyphertext = [System.Byte[]]::new($plainText.Length); $keyposition = 0 $plainText.ToCharArray() | foreach-object -process { $cyphertext[$keyposition] = $_ -bxor $KeyArray[$keyposition % $KeyArray.Length] $keyposition += 1 } return [Convert]::ToBase64String($cyphertext) }
测试
Decode(Encode("324328***)x-sdfsaf2344")) | out-string
结果
与未加密的数据结果一样
以上所述就是小编给大家介绍的《异或加密(XOR)原理及实现》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Build Your Own Web Site the Right Way Using HTML & CSS
Ian Lloyd / SitePoint / 2006-05-02 / USD 29.95
Build Your Own Website The Right Way Using HTML & CSS teaches web development from scratch, without assuming any previous knowledge of HTML, CSS or web development techniques. This book introduces you......一起来看看 《Build Your Own Web Site the Right Way Using HTML & CSS》 这本书的介绍吧!