1.xor运算

  1. 1^0=1
  2. 0^0=0
  3. 1^1=0
  4. 23^32=55
  5. 55^32=23
  6. 2332进行异或两次运算结果为23

2.XOR加密

设key=[]byte{1,2,3,4,5,6},src=[]byte{11,22,33,44,55,66,77,88,99}

将src与key左对齐进行异或位运算

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

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

3.XOR解密

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

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

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

4.XOR+base64进行加密

  1. func main() {
  2. key := "dGhpcyBpcyBhIGV4YW1wbGVjenh2enh2emZhc2ZhZmE"
  3. str:="abcdefghijklmnopq"
  4. strBase64:=base64.StdEncoding.EncodeToString([]byte(str))
  5. fmt.Println("加密前:",strBase64)
  6. // 1.对strBase64加密
  7. enCodeStrBase64:=XorEncode(strBase64,key)
  8. fmt.Println("加密后:",enCodeStrBase64)
  9. // 2,对enCodeStrBase64解密
  10. deCodeStrBase64:=XorDecode(enCodeStrBase64,key)
  11. fmt.Println("解密:",deCodeStrBase64)
  12. }
  13. func xor(src []byte, key []byte) []byte {
  14. for i := 0; i < len(src); i++ {
  15. src[i] ^= key[i%len(key)]
  16. }
  17. return src
  18. }
  19. func XorDecode(src, key string) string {
  20. srcByte, _ := base64.StdEncoding.DecodeString(src)
  21. keyByte, _ := base64.StdEncoding.DecodeString(key)
  22. srcByte = xor(srcByte, keyByte)
  23. return base64.StdEncoding.EncodeToString(srcByte)
  24. }
  25. func XorEncode(src,key string)string{
  26. return XorDecode(src,key)
  27. }

输出结果:

  1. 加密前: YWJjZGVmZ2hpamtsbW5vcHE=
  2. 加密后: FQoKF0UPFEgISg4UDAMfHBQ=
  3. 解密: YWJjZGVmZ2hpamtsbW5vcHE=

XOR+base64加密的更多相关文章

  1. android Base64 加密

    一 Base64加密 import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStre ...

  2. Js中 md5 sha1 base64 加密

    js的3中加密方式: .sha1加密,加密性高 调用: var sha = hex_sha1(str); .base64加密 调用: var b = new Base64(); var str = b ...

  3. js base64加密,后台解密

    这是为了解决页面发送post请求,传输密码,在页面的控制台可以看到密码的明文,所以先用base64把要传输的密码转换为非明文,然后在后台解密处理. base64encode.js // base64加 ...

  4. (iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题

    我们在项目中为了安全方面的考虑,通常情况下会选择一种加密方式对需要安全性的文本进行加密,而Base64加密和DES64加密是常用的加密算法.我记得我在前一个项目中使用的就是这两种加密算法的结合:Bas ...

  5. Base64加密工具-iBlogs

    简易的Base64加密工具开发步骤 1.编写Java测试桩 import java.io.BufferedReader; import java.io.IOException; import java ...

  6. JS实现base64加密解密

    JS实现base64加密解密 转载自http://blog.csdn.net/fengzheng0306/archive/2006/04/25/676055.aspx 方法一: <HTML> ...

  7. 【代码笔记】iOS-3DES+Base64加密解密

    一,工程目录. 二,代码. RootViewController.m #import "RootViewController.h" #import "NSString+T ...

  8. 实现Base64加密解密

    using System; using System.Text;   namespace Common { /// <summary> /// 实现Base64加密解密 /// </ ...

  9. IOS 杂笔-10(Base64 加密)

    base64加密是可逆的,因此并不是很安全,在一些注重安全的地方很少用到,但是在普通传输中可以使用. 切忌,base64加密是不安全的. // // ViewController.m // CX-Ba ...

随机推荐

  1. Centos Firefox中文乱码

    解决CentOS Firefox 中文乱码问题,执行以下命令 Centos 6 # yum -y groupinstall chinese-support 重启电脑即可. Centos 7 yum - ...

  2. [网络流]Farm Tour(费用流

    Farm Tour 题目描述 When FJ's friends visit him on the farm, he likes to show them around. His farm compr ...

  3. MD5=======RBAC权限管理

    经过网上查阅相关的说明原来,MD5全名Message-Digest Algorithm 5(信息-摘要算法)是一种不可逆的加密算法. MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性 ...

  4. 20175316盛茂淞 2018-2019-2 《Java程序设计》第2周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第2周学习总结 教材学习内容总结 1.整数:可细分为为short整数(占2字节),int整数(占4字节),long整数( ...

  5. input实现图片或视频上传(样式+代码)

    背景:vue/element.ui 1..html: <div v-show="recordForm.resourceType==1"> <el-form-ite ...

  6. Python开发——6.文件操作

    一.文件操作 1.文件操作的处理流程 打开文件得到文件句柄并赋值给一个变量====>通过句柄对文件进行分析====>关闭文件 #1. 打开文件,得到文件句柄并赋值给一个变量 f=open( ...

  7. Git学习篇之git remote add origin错误

    提示出错信息:fatal: remote origin already exists. 解决办法如下: 1.先输入$ git remote rm origin 2.再输入$ git remote ad ...

  8. oracle基础函数--decode

    含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN R ...

  9. 171. Excel表列序号

    题目:给定一个Excel表格中的列名称,返回其相应的列序号. 例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> ...

  10. nlog 的手动配置

    使用nlog的时候,有时候需要手动配置.比如数据库链接和密码不配在文件里,或者统计配置在一个位置之类的. var config = new NLog.Config.LoggingConfigurati ...