Python模块扩展之AES算法

最近有个项目需要加密数据,然后密码学中的定律就是:

  1. 硬件加密快于软件加密
  2. 编译加密快于脚本加密

所以基于硬件不可能,脚本又太慢的情况下,我们就开始用C语言写Python的模块扩展

写的方法网上有很多,我就不一一赘述了

主要想实现的功能就是通过Python向模块中传入一个字符串和一个密钥

然后解密的时候再根据密钥解密,我采用的AES是256bit的密钥。。。也是最大密钥长度

初始密钥长32bit,每次加密的明文长16bit,然后我们开始

选择AES的时候我看了python著名的加密库pycrypto的源代码,按理来说,使用这个现成的库会方便很多,但是,这个库并不在pip中,所有安装配置也是比较麻烦,所有我就想写一个python的模块扩展,直接从本地中导入模块,这样配置的时候只要这个扩展.so文件在同一个目录下,就可以正常工作了。

然后选择256bit的加密强度是考虑到工程的向后发展,毕竟现在AES也是有有效的攻击手段了,所有只好选用最强的加密方式。

然后我也看了很著名的AES开源项目

tiny-AES128-C

但是他的加密强度只达到了128bit,所有也不能用

最后选择了一个写的比较好的AES算法这里是作者的github

AES-256

然后我改了一下形成Python的扩展模块

其中的难点就是Python模块的传入数据只能是int,或者string再或者其他什么鬼类型,就是没有数组

然后我们就只好通过python向模块中传入字符串==,再通过C代码的处理,填入数组中计算加密

然后这个处理有点变扭,也是学艺不精吧,我先是写入一个文件中,再从文件的stream流中一字节一字节读取,然后填入数组中

然后就是正常的加密解密

然后附上代码的地址,欢迎大家fork

Python-AES-module

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值