python做手机app服务端接口,数据AES加密传输

最近小编在为一款app写json接口,当然选择了熟悉的django框架,因为之前做过app接口,传输使用了token机制以及签名机制,JWT做的权限校验,而且上了https,一直觉得安全还可以。但是最近写这个是一款手机挖矿程序,里面涉及了很多挖矿的算法,和服务器通信需要极高的加密算法要求,漏了就可能被作弊挖矿。在调研的过程中遇到了AES加密,觉得可以给大家简单的了解一下,当然有使用django做app服务端的小伙伴也可以关注我 ,一起讨论学习。

首先说下AES加密算法,下面贴一段简介:

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

其实小编的需求很简单,除去一些密码本的设计就是,app客户端用一个私钥加密,加密后传输过来数据,防止抓包,获取数据,然后服务器端收到进行解密,回复数据也是回复加密后的数据,客户端解密,当然是在token和签名机制的前提下,发现问题数据立即封号。当然为了防止反编译,私钥肯定要做一些处理。

在多说一句,我个人觉得通信肯定是没有绝对的安全,但是安全就是做到造假的技术门槛够高就行了,挡住99%的黑客抓包攻击,至于那1%,损失了就报警就行了。

查了一下据说现在AES是不能破解的(虽然我不信),所以假装觉得还比较靠谱,所以研究了一下在python中的应用。

1、首先肯定要安装对应的包

conda create -n aes python=2.7

对应py2.7 然后安装下

pip install pycrypto

网上说windows会遇到很多问题,需要安装vs的编译器等等,但是我没遇到,也可能是之前转过,所以这里不多说,遇到了大家可以来找小编讨论。

2、使用

python做手机app服务端接口,数据AES加密传输

引入对应包,这里简单说一下,AES是一种算法,这种算法有很多的实现模式,最常用的事CBC模式,当然还有很多其他模式

python做手机app服务端接口,数据AES加密传输

想了解的可以自己查下,我就不多说了。

加密的方式大概是这样,加密的字符串必须是16位的倍数,16,32,或者48,如果加密的字符串不是16的倍数,那就用'\0'补足,如下实现:

python做手机app服务端接口,数据AES加密传输

开始觉得有点坑,不过也忍了,加0补足就加0补足吧

然后是解密,也比较简单,解密出来把右面的\0删掉就行了,如下:

python做手机app服务端接口,数据AES加密传输

然后使用的使用 要传入秘钥。如下运行截图

python做手机app服务端接口,数据AES加密传输

python做手机app服务端接口,数据AES加密传输

然后就是手机端的AES加密算法,我就不知道他们怎么弄的了,不过肯定是能弄。

感觉都是站在巨人的肩膀,没啥技术含量

需要这段代码的可以关注我


鲜花

握手

雷人

路过

鸡蛋
用心服务创业者
0851-88611148
周一至周五 9:00-18:00
意见反馈:admin@0851life.com

扫一扫关注我们

Powered by 童码少儿编程 X3.4© 2001-2013 0851life Inc.|网站地图