python安装pycryptodome_python代码如何转成c代码

python安装pycryptodome_python代码如何转成c代码在windows下用一下开源工具就是悲催,如题python安装pycrypto在windows也是很麻烦。一般在官方网站下载:https://www.dlitz.net/software/pycrypto/然后使用命令就可以安装成功了:pythonsetup.pybuildpythonsetup.pyinstall但是在windows下会报错:Pythonerror:Unableto…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

在windows下用一下开源工具就是悲催,如题python安装pycrypto在windows也是很麻烦。一般在官方网站下载:

https://www.dlitz.net/software/pycrypto/

然后使用命令就可以安装成功了:

python setup.py build

python setup.py install

但是在windows下会报错:

Python error: Unable to find vcvarsall.bat

解决方案一:安装Vs2008(实测)

完全的无脑流,安装完问题直接解决。

解决方案二:安装Vs2010(未测试)

上次在电脑上装个Vs2010并不能像 vs2008那样直接解决问题,从网上找到如下解决方案,不知是否可行。

打开“\Lib\distutils\msvc9compiler.py”

找到 toolskey = “VS%0.f0COMNTOOLS” % version,直接修改为 toolskey = ”VS100COMNTOOLS”

解决方案三:安装MinGW(实测)

1、下载安装MinGW,下载地址为:http://sourceforge.net/projects/mingw/files/latest/download?source=files

2、在MinGW的安装目录下找到bin文件夹,找到mingw32-make.exe,复制一份更名为make.exe

3、把MinGW的路径添加到环境变量path中,比如我把MinGW安装到D:\MinGW\中,就把D:\MinGW\bin添加到path中;

4、在\distutils增加文件distutils.cfg,在文件里输入

[build]

compiler=mingw32

保存;

5、执行原先的模块安装,发现还是报错,报错内容为:error: command ’gcc’ failed: No such file or directory  解决方案是将D:\MinGW\lib再添加到PATH中。

6、如果安装过程中出现 error: Could not find ‘openssl.exe’ 则直接到http://pypi.python.org/pypi/pyOpenSSL/0.13 下载安装即可。

再次执行时安装模块时,发现如下错误:

D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall “-ID:\Program Files\Python27\inc

lude” “-ID:\Program Files\Python27\include” “-ID:\Program Files\Python27\PC” -c

../libdasm.c -o build\temp.win32-2.7\Release\..\libdasm.o

cc1.exe: error:unrecognized command line option ‘-mno-cygwin’

error: command ‘gcc’ failed with exit status 1

原因是gcc 4.6.x 以后不再接受-mno-cygwin为了解决这个问题需要修改\distutils\cygwinccompiler.py文件。找到:

self.set_executables(compiler=’gcc -mno-cygwin -O -Wall’,

compiler_so=’gcc -mno-cygwin -mdll -O -Wall’,

compiler_cxx=’g++ -mno-cygwin -O -Wall’,

linker_exe=’gcc’,

linker_so=’%s -mno-cygwin %s %s’

% (self.linker_dll, shared_option,

entry_point))

修改为:

self.set_executables(compiler=’gcc -O -Wall’,

compiler_so=’gcc -mdll -O -Wall’,

compiler_cxx=’g++ -mno-cygwin -O -Wall’,

linker_exe=’gcc’,

linker_so=’%s -mno-cygwin %s %s’

% (self.linker_dll, shared_option,

entry_point))

讲了三个解决方案,安装visualstudio太庞大的,没有试,于是就尝试第三种方法。其中openssl.exe的错误没有碰到,应该是已经有了,而distutils.cfg文件的目录在python2.7下面有点不一样,在Python27\Lib\distutils下面。一直到最后个修改项,最终错误是:

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘PyInt_AsUnsignedLongLongMask’

没有解决。

中间有个警告,在cygwin中使用dos style的path,设置path CYGWIN=nodosfilewarning 来规避

cygwin warning:

MS-DOS style path detected: C:\cygwin\home\ADMINI~1\hadoop\/build/native

Preferred POSIX equivalent is: /home/ADMINI~1/hadoop/build/native

CYGWIN environment variable option “nodosfilewarning” turns off this warning.

Consult the user’s guide for more details about POSIX paths:

http://cygwin.com/cygwin-ug-net/using.html#using-pathnames

12/02/13 10:34:53 INFO namenode.NameNode: STARTUP_MSG:

python setup.py install build –compiler=mingw32

这个命令尝试也不行。

在这个url:http://stackoverflow.com/questions/1687283/why-cant-i-just-install-the-pycrypto,国际友人介绍用PyPM来安装,由于要另外安装工具,没有尝试:

You may use PyPM to install (pre-built binary package of) pycrypto:

C:> pypm install pycrypto

Ready to perform these actions:

The following packages will be installed:

pycrypto-2.0.1

Get: [pypm.activestate.com] pycrypto 2.0.1-1

Installing pycrypto-2.0.1

PyPM can be installed by installing ActivePython.http://www.activestate.com/activepython/

后来在这里http://lili-xiang.iteye.com/blog/1796640,看到有预编译好的版本用来安装,在地址http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win-amd64-py3.2.exe下载PyCrypto 2.6 for Python 3.2 64bit,随后安装成功,可以在Komodo IDE 7中使用了。测试代码是这里的:http://ddkangfu.blog.51cto.com/311989/484801

但是例子的代码是跑不起来的,因为aes加密中,cbc模式下是还有个iv参数的,修改成这样

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from Crypto.Cipher import AES

PADDING = ‘\0’

pad_it = lambda s: s+(16 – len(s)%16)*PADDING

if __name__ == “__main__”:

key = ‘1234567890123456’

data = ‘qwertyuiopasdfgh’

obj = AES.new(key, AES.MODE_CBC, data)

#obj = AES.new(key, AES.MODE_ECB)

crypt = obj.encrypt(data)

print crypt

#obj2 = AES.new(key, AES.MODE_ECB)

obj2 = AES.new(key, AES.MODE_CBC, data)

recovery = obj2.decrypt(crypt)

print recovery

才可以正常运行,如果使用ECB模式,就不用最后一个iv参数的。这里使用加密源data作为iv参数是没有意思的,正式使用的时候肯定会另外定义的字符串,记得iv长度要是16位的倍数。代码里还要注意obj2,不能重复使用第一个obj,在加密过程中obj已经改变了,如果不充生成obj2,是无法解密成功的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215480.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • kafka批量删除topic_kafka自动创建topic

    kafka批量删除topic_kafka自动创建topic方法一:快速配置删除法1.kafka启动之前,在server.properties配置delete.topic.enable=true2.执行命令bin/kafka-topics.sh–delete–topictest–zookeeperzk:2181或者使用kafka-manager集群管理工具删除注意:如果kafka启动之前没有配置delete.topic.enab…

    2022年10月7日
    0
  • 嵌套对象转map

    嵌套对象转map嵌套对象转map,当对象嵌套层次太深,获取子对象的值及其不便,为解决这一问题,于是对象转mpa,有key就能得到相应的value。解决复杂json情况,尤其是当第三方json过于复杂时候很适合,如央行征信报告等。java代码://测试json,可以为一个Object对像Stringjson=”{\”success\”:0,\”errorMsg\”:\”错误消息\”,\…

    2022年5月17日
    36
  • SQL Server 2008还原数据库时出现“备份集中的数据库备份与现有的数据库不同”的解决方法

    SQL Server 2008还原数据库时出现“备份集中的数据库备份与现有的数据库不同”的解决方法引言 nbsp nbsp nbsp nbsp 现在在做项目 由于每个人是分模块的 所以大家的测试数据都不同步 导致好多时候会因为别人填的数据不同而调半天的错 所以我还是自己还原一个数据库 自己填自己的数据吧 nbsp nbsp 报错 nbsp nbsp nbsp nbsp nbsp 之前还原过很多个数据库都没什么问题 这次也是按照之前的步骤 先建立了一个目标数据库 之后选择源文件进行还原 最后报了这么一个错 解决方法 nbsp 1 nbsp 首先我们

    2025年6月20日
    0
  • 【Math for ML】线性代数-单射,满射,双射,同构,同态,仿射[通俗易懂]

    【Math for ML】线性代数-单射,满射,双射,同构,同态,仿射[通俗易懂]I.映射(Mapping)1.单射(Injective)函数f是单射当且仅当若f(x)=f(y)则x=y。例子:f(x)=x+5从实数集\(R\)到\(R\)是个单射函数。这个函数很容易被还原:f(3)=8,即已知8可以返回32.满射(Surjective)函数f(从集A到集B)是满射当且仅当在B中的每个y存在至少…

    2022年5月24日
    49
  • linux解压zip文件,

    linux解压zip文件,一,linux解压zip文件,命令:unzip如果没有该命令,可先安装,命令为:yum-yinstallunzip

    2022年5月24日
    31
  • bowtie 加mn标签_Bowtie 比对「建议收藏」

    bowtie 加mn标签_Bowtie 比对「建议收藏」【Bowtie】DNA序列拼接的原理【Jenny点评】我一直以为Bowtie是一个短序列拼接工作,实际上这是错误的。它不是序列拼接工作,只是一个序列比对的工具。最后的结果是相对index而言,对各个短序列进行定位。——————短序列比对的原理如何?目前有哪些常用的短序列比对软件?okhttp://blog.sina.com.cn/s/blog_9617895f01011n…

    2025年7月14日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号