XOR+base64加密

1.xor运算

 1^0=1
 0^0=0
 1^1=0
 
 23^32=55
 55^32=23
 
 23对32进行异或两次运算结果为23

2.XOR加密

设key=[]byte{1,2,3,4,5,6},src=[]byte{11,22,33,44,55,66,77,88,99}
将src与key左对齐进行异或位运算

for i:=0;i<len(src);i++{
    src[i]^=key[i%len(key)]
 }

获得的src即是加密后的[]byte数组

3.XOR解密

将加密后的src与key左对齐进行异或位运算

for i:=0;i<len(src);i++{
    src[i]^=key[i%len(key)]
 }

获得的src即是解密后的[]byte数组

4.XOR+base64进行加密

func main() {
	key := "dGhpcyBpcyBhIGV4YW1wbGVjenh2enh2emZhc2ZhZmE"

	str:="abcdefghijklmnopq"
	strBase64:=base64.StdEncoding.EncodeToString([]byte(str))
	fmt.Println("加密前:",strBase64)
	// 1.对strBase64加密
	enCodeStrBase64:=XorEncode(strBase64,key)
	fmt.Println("加密后:",enCodeStrBase64)

	// 2,对enCodeStrBase64解密
	deCodeStrBase64:=XorDecode(enCodeStrBase64,key)
	fmt.Println("解密:",deCodeStrBase64)
}

func xor(src []byte, key []byte) []byte {
	for i := 0; i < len(src); i++ {
		src[i] ^= key[i%len(key)]
	}
	return src
}

func XorDecode(src, key string) string {
	srcByte, _ := base64.StdEncoding.DecodeString(src)
	keyByte, _ := base64.StdEncoding.DecodeString(key)
	srcByte = xor(srcByte, keyByte)
	return base64.StdEncoding.EncodeToString(srcByte)
}

func XorEncode(src,key string)string{
	return XorDecode(src,key)
}

输出结果:

加密前: YWJjZGVmZ2hpamtsbW5vcHE=
加密后: FQoKF0UPFEgISg4UDAMfHBQ=
解密: YWJjZGVmZ2hpamtsbW5vcHE=
posted @ 2018-08-08 15:33  孤独风中一匹狼  阅读(5659)  评论(0编辑  收藏  举报