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左对齐进行异或位运算code

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

得到的src便是解密后的[]byte数组string

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)
}

输出结果:base64

加密前: YWJjZGVmZ2hpamtsbW5vcHE=
加密后: FQoKF0UPFEgISg4UDAMfHBQ=
解密: YWJjZGVmZ2hpamtsbW5vcHE=