Python模块扩展之AES算法

    xiaoxiao2025-01-08  10

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

    硬件加密快于软件加密编译加密快于脚本加密

    所以基于硬件不可能,脚本又太慢的情况下,我们就开始用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

    转载请注明原文地址: https://ju.6miu.com/read-1295274.html
    最新回复(0)