python安装Crypto:NomodulenamedCrypto.Cipher
时间: 2023-06-22 19:39:10 浏览: 242
这个问题通常是由于缺少PyCrypto或Cryptography模块导致的。您可以尝试在命令行中运行以下命令来安装PyCrypto模块:
```
pip install pycrypto
```
如果您使用的是Python 3.x版本,则可以尝试使用以下命令安装cryptography模块:
```
pip install cryptography
```
如果上述方法都不能解决您的问题,请提供更多详细信息,例如您的操作系统、Python版本和完整的错误消息。
相关问题
encrypted = crypto.AES.encrypt(srcs, key, { iv: key, mode: crypto.mode.CFB, padding: crypto.pad.NoPadding })转换为Python代码
这是将一个字符串 `srcs` 用 AES 算法加密,加密的密钥为 `key`,加密模式为 CFB,填充方式为 NoPadding 的 JavaScript 代码。
下面是对应的 Python 代码:
```python
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
def aes_encrypt(srcs, key):
iv = key
cipher = AES.new(key, AES.MODE_CFB, iv=iv)
plaintext = pad(srcs.encode('utf-8'), AES.block_size)
ciphertext = cipher.encrypt(plaintext)
return ciphertext.hex()
```
其中,`srcs` 是要加密的字符串,`key` 是加密密钥。`iv` 也是加密密钥,因为 CFB 模式需要一个初始向量。
注意,Python 中默认的填充方式为 PKCS7,因此需要手动指定为 NoPadding。加密结果为一个十六进制的字符串。如果需要将加密结果转换为 Base64 格式,可以使用 `base64.b64encode()` 方法。
Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61) Caused by: javax.crypto.IllegalBlockSizeException: Input buffer not a multiple of BlockSize(16) at com.fmjce.crypto.fmsymmetry.PaddingNone.corePad(PaddingNone.java:18) at com.fmjce.crypto.fmsymmetry.BlockCipher.engineDoFinal(BlockCipher.java:540) at javax.crypto.Cipher.doFinal(Cipher.java:2047) at com.crypto.sm.App.testSm4ByEcb(App.java:32) at com.crypto.sm.App.main(App.java:16)
这是一个异常堆栈信息,看起来是在使用Java中的加密类库时出现了错误。具体来说,这里使用了SM4算法的ECB模式进行加密,但是输入的数据长度不是块大小(16)的整数倍,导致出现了IllegalBlockSizeException异常。需要检查输入数据的长度并进行填充,使其成为块大小的整数倍,才能正确进行加密。
阅读全文