我必须签署一个值,对于我的电子邮件,我必须将签名值存储在Django CharField。 我正在使用django.core.signing模块的Signer.sign方法。 由于我想插入db字段的max_length参数,我的问题是,我可以放入max_length中的最小值是什么,以便始终将其成功存储在db中。Django CharField的最小max_length用于存储Signer对象的符号方法的输出(django.core.signing)
0
A
回答
0
这是他们在Django docs上给出的。
from django.core.signing import Signer
>>> signer = Signer()
>>> value = signer.sign('My string')
>>> value
'My string:GdMGD6HNQ_qdgxYP8yBZAdAIV1w'
符号串的长度为28(包括“:”)加上你的电子邮件string.to的长度为安全起见,我建议你使用Django TextField代替CharField
1
事实上,签署标记长度增长与输入值:
>>> from django.core.signing import Signer
>>> signer = Signer()
>>> signer.sign('a')
'a:JRYbTbX2xBKZAgJxbzUzsl80vIQ'
>>> signer.sign('ab')
'ab:ThbCyQ9bQpAX4vMAmYSEtbtF7Y4'
>>> signer.sign('abc')
'abc:4_rTdYDe18bPklTTKYIsJaB9_oM'
>>> signer.sign('abcd')
'abcd:RzGFLsNgRv-LQ4lEorvNPjGH5LM'
>>> signer.sign('abcde')
'abcde:oOdfJjZ14Jz2F4aHD3pQMBC9fAA'
>>> signer.sign('abcdefghijkl')
'abcdefghijkl:Wz1gPy4QS7ZoCyXuKgUFG-ofxpU'
但是,根据我的测试,令牌的最大尺寸为27
。根据这个答案What is the maximum length of a valid email address?电子邮件地址的最大长度是254
个字符。 max_length
TextField
的属性应为282
(254
+ 27
+ 1
为分隔符)。
+1
签名使用HMAC和SHA-1作为哈希函数,然后在base64中对输出进行编码,从base64输出中去除任何填充字符'='。 SHA-1的输出是20个字节,base64将长度增加33%,因此在测试中找到的最大27个字节是正确的。 – knbk
相关问题
- 1. Mongo使用Django的max_length问题CharField
- 2. Django CharField存储换行
- 3. 如何降低CharField的MAX_LENGTH在Django当数据在DB
- 4. Django - 更改CharField TextInput上的max_length错误消息
- 5. 如何获得CharField的MAX_LENGTH在Django模板
- 6. CharField max_length 2^n vs 2^n-1
- 7. 存储对象的调用方法
- 8. Django的CharField至字符串
- 9. 最好的方法来存储解析的HTML输出在XML
- 10. Django的MAX_LENGTH为IntegerField
- 11. 关于数据存储在代号1中的最佳方法
- 12. Ceph对象存储(RADOS)中对象的最佳大小
- 13. 我在调用方法和存储它的对象时出错
- 14. 字符串太小,无法存储进程的标准输出
- 15. React Redux - 存储对象的方法
- 16. 输出Django Charfield作为响应Bootstrap textarea
- 17. 输入字符串输出颜色对象c的方法#
- 18. Django的max_length值为一个字符行
- 19. 保存父对象的最佳方法
- 20. 最好的存储方法
- 21. Java:存储和访问对象列表的最佳方法
- 22. 什么是最适合在android中存储对象的方法?
- 23. 在ASP.Net中存储对象列表的最佳方法MVC
- 24. 重写/禁用CharField的MAX_LENGTH验证在form.ModelForm
- 25. Django模型 - 存储多个联系号码的最佳方式
- 26. 找到用户输入的最大号码和最小号码(方法)
- 27. 反射 - 输出任何对象的最佳方法?
- 28. 没有最大长度的Django CharField
- 29. 用于存储对象
- 30. Django的模型Charfield
'max_length'没有限制。唯一的限制是MySQL索引的最大长度为767个字节,这意味着如果您对具有字符集的CharField使用索引或唯一约束,每个字符使用3个字节,那么_then_的限制是255 。当使用不同的数据库或没有索引时,最大长度没有限制(但可能存在其他限制,例如一行的大小)。 – knbk
感谢您的更正。 – badiya