获得ValueError:使用Django和Python进行加密和解密

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获得ValueError:使用Django和Python进行加密和解密相关的知识,希望对你有一定的参考价值。

我在尝试加密我的字符串类型值时收到以下错误。

错误:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/opt/lampp/htdocs/d30/carClinic_vulnerable/bookingservice/views.py", line 141, in signsave
    obj = AES.new('this is a carkey123', AES.MODE_CBC, 'This is an IV456')
  File "/usr/lib/python2.7/dist-packages/Crypto/Cipher/AES.py", line 94, in new
    return AESCipher(key, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/Crypto/Cipher/AES.py", line 59, in __init__
    blockalgo.BlockAlgo.__init__(self, _AES, key, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/Crypto/Cipher/blockalgo.py", line 141, in __init__
    self._cipher = factory.new(key, *args, **kwargs)
ValueError: AES key must be either 16, 24, or 32 bytes long

我在下面解释我的代码。

name = request.POST.get('uname')
obj = AES.new('this is a carkey123', AES.MODE_CBC, 'This is an IV456')
enpass = obj.encrypt(name)
答案

答案是在错误消息中的简单字母:

“AES密钥长度必须为16,24或32字节”。

你的密钥('这是一个carkey123')长19个字节,使用一个长度为16,24或32字节的密钥。

以上是关于获得ValueError:使用Django和Python进行加密和解密的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 的详细视图中使用两个参数时,得到“ValueError:int() 的无效文字,基数为 10:'Trancel'”

django:ValueError - 无法序列化

ValueError:无法引用参数值 <django.contrib.postgres.fields.jsonb.JsonAdapter

Django 引发 ValueError: int() 的无效文字,在 POST 上以 10 为基数

ValueError 精确查找的 QuerySet 值必须限制为在 django 视图上使用切片的一个结果

在 Django 迁移期间收到“ValueError: Found wrong number of (0) of constraint for ...”