zoukankan      html  css  js  c++  java
  • 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=
  • 相关阅读:
    微信小程序登录方案
    React编写input组件传参共用onChange
    webpack3+node+react+babel实现热加载(hmr)
    Nodejs 复制文件/文件夹
    MongoDB安全策略
    Mongodb启动&关闭
    Mongodb安装启动详解
    网页3D效果库Three.js学习[二]-了解照相机
    网页3D效果库Three.js初窥
    设置input标签placeholder字体颜色
  • 原文地址:https://www.cnblogs.com/fwdqxl/p/9443094.html
Copyright © 2011-2022 走看看