2019独角兽企业重金招聘Python工程师标准>>>

在Go语言中,有自带的对称或者非对称加密函数,但是有点重量级,用起来也有点麻烦。

一般的游戏设计中,肯定不用Go自带的那些加密库,因为处理速度有点慢,服务器跟不上速度,客户端也跟不上速度。

平时开发中,我在delphi中、易语言中常用这个算法加密,算法是网上抄的:

XorKey可以自定义修改。

delphi代码:

constXorKey: array[0..7] of Byte = ($B2, $09, $BB, $55, $93, $6D, $44, $47); //字符串加密用function Enc(Str: string): string; //字符加密函數  這是用的一個異或加密
vari, j: Integer;
beginResult := '';j := 0;for i := 1 to Length(Str) dobeginResult := Result + IntToHex(Byte(Str[i]) xor XorKey[j], 2);j := (j + 1) mod 8;end;
end;             function Dec(Str: string): string; //字符解密函數
vari, j: Integer;
beginResult := '';j := 0;for i := 1 to Length(Str) div 2 dobeginResult := Result + Char(StrToInt('$' + Copy(Str, i * 2 - 1, 2)) xor XorKey[j]);j := (j + 1) mod 8;end;
end;

用Go语言改写后,是这样的,大家其实可以自己优化下。

var XorKey []byte = []byte{0xB2, 0x09, 0xBB, 0x55, 0x93, 0x6D, 0x44, 0x47}type Xor struct {
}
type m interface {enc(src string) stringdec(src string) string
}func (a *Xor) enc(src string) string {var result stringj := 0s := ""bt := []rune(src)for i := 0; i < len(bt); i++ {s = strconv.FormatInt(int64(byte(bt[i])^XorKey[j]), 16)if len(s) == 1 {s = "0" + s}result = result + (s)j = (j + 1) % 8}return result
}func (a *Xor) dec(src string) string {var result stringvar s int64j := 0bt := []rune(src)fmt.Println(bt)for i := 0; i < len(src)/2; i++ {s, _ = strconv.ParseInt(string(bt[i*2:i*2+2]), 16, 0)result = result + string(byte(s)^XorKey[j])j = (j + 1) % 8}return result
}
func main() {xor := Xor{}fmt.Println(xor.enc("123fsgdg0fd"))fmt.Println(xor.dec("833b8833e00a2020826fdf"))
}

python中,可以这样来写。

class Xor:XorKey=[0xB2, 0x09, 0xBB, 0x55, 0x93, 0x6D, 0x44, 0x47]def __init__(self):pass@classmethoddef enc(self,src):j,result=0,""bt=bytes(src,'ascii')h=len(bt)for i in range(h):result=result+hex(bt[i]^(self.XorKey[j]))[2:]j=(j+1)%8return result@classmethoddef dec(self,src):j,result,h=0,"",0h=len(src)for i in range(0,h,2):result=result + chr (int( src[i:i+2],16)^self.XorKey[j])j=(j+1)%8return result
a=Xor()
print(a.enc("123fsgdg0fd"))
print(a.dec("833b8833e00a2020826fdf"))

转载于:https://my.oschina.net/u/248241/blog/862145

Golang、python中的一个异或加密算法,用来加密字符串。相关推荐

  1. 如何在 Python 中创建一个简单的神经网络

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 引言 在过去的几十年里,机器学习对世界产生了巨大的影响,而且它的普 ...

  2. python if语句多个条件-关于函数:如何在python中为一个if语句提供多个条件

    本问题已经有最佳答案,请猛点这里访问. 所以我在用python 3.1.5编写一些代码,这些代码需要有多个条件才能发生某些事情.例子: 1 2 3 4 5def example(arg1, arg2, ...

  3. c++定义一个动态对象数组_如何在Python中自定义一个可被调用的对象实例?

    前言 在关于Python描述符函数的详解三篇中,我们有提到如何基于类创建一个"描述符函数",之所以能够基于类创建这样一个概念,是因为用到了类中的__call__属性,从前述文章中可 ...

  4. python中2d_【IT专家】如何在Python中复制一个2D数组?(复制)

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 如何在 Python 中复制一个 2D 数组? ( 复制 ) 如何在 Python 中复制一个 2D 数组 ?( 复制 )[ 英 ]How to  ...

  5. python 幂运算 整数_在Python中检查一个数字是否是另一个数字的幂

    python 幂运算 整数 To solve this problem simply, we will use the log() function from the math module. The ...

  6. if函数python_关于函数:如何在python中为一个if语句提供多个条件

    本问题已经有最佳答案,请猛点这里访问. 所以我在用python 3.1.5编写一些代码,这些代码需要有多个条件才能发生某些事情.例子: 1 2 3 4 5def example(arg1, arg2, ...

  7. python中定义类的关键字_在Python中,定义一个类使用什么关键字?

    [多选题]技术应用的限制包括 [多选题]关于类和对象,下面说法正确的有? [判断题]温度越高,料液的粘度越小,扩散系数越大,可提高膜通量. [单选题]某企业有10台运货车,已知每台车每运行100小时平 ...

  8. python并发循环_在Python中模拟一个并发循环?

    在Python中模拟一个并发循环? 我需要模拟Python程序中的并发循环.不幸的是,以下简单的代码不起作用:list_of_ints = [ 1, 2, 3 ]iterator = list_of_ ...

  9. python判断字符串合法,详解Python判定IP地址合法性的三种方法 python中判断一个字符串是否是IP地址...

    html 中 鼠标放在标签上会显示小手状,其它标签在其他标签上,美工给加了一些样式,鼠标放上去也显示小手状.有哪位大手状样式 有什么不懂的前端问题可以去菜鸟驿站.全都是泡沫,只一刹的花火,所谓的友情, ...

  10. 在python中创建一个具有特定大小的空列表

    本文翻译自:Create an empty list in python with certain size I want to create an empty list (or whatever i ...

最新文章

  1. 1.21 方法的可变参数(String...names)
  2. Android的Gson的使用方法,实现Json结构间相互转换
  3. 阿里张磊:云计算生态价值点正迅速聚焦到“应用”上
  4. 自定义水波纹效果,可设置波纹条数和波纹颜色,使用简单
  5. 2015蓝桥杯省赛---java---A---9(垒筛子)
  6. Linux load函数,kexec_load()函数 Unix/Linux
  7. redis 的mq功能演示
  8. MySQL如何访问Postgres
  9. zabbix使用ICMP ping监控网络状态
  10. LeetCode 73. Set Matrix Zeroes
  11. Python进阶(十)多进程multiprocessing和subprocess模块
  12. android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第三部分,完整代码)
  13. ceph osd 磁盘损坏处理
  14. 带你Dart带你Diao之类(一)
  15. 青龙面板安装搭建详细教程
  16. python-直接删除整个文件夹
  17. Uber vs. Lyft
  18. GO项目打包部署操作
  19. 环信群列表 php,一行代码实现群聊头像(用环信仿微信群聊头像)
  20. iOS 拦截系统自带的Pop事件

热门文章

  1. matlab 流水灯,Matlab生成stm32代码
  2. c++ sort排序函数
  3. 《Python语言程序设计》二级教程课后编程题及答案
  4. C语言水仙花数和总数,C语言与水仙花数
  5. java对象中方法的存储原理_垃圾收集机制的基本原理及方法
  6. This iPhone 6s is running iOS 11.3.1 (15E302), which may not be supported by this version of Xcode.
  7. jquery字符串转json
  8. 10 Linux之yum源码安装
  9. Hadoop简介(1)
  10. java 关于时间处理