【问题标题】:App Engine ndb StringProperty and string hashesApp Engine ndb StringProperty 和字符串哈希
【发布时间】:2013-04-25 16:25:54
【问题描述】:

我正在使用 PyCrypto 生成安全密钥哈希。我想存储我生成的一个或多个部分密钥。每个部分键的格式为

\x0f|4\xcc\x02b\xc3\xf8\xb0\xd8\xfc\xd4\x90VE\xf2

我有一个 ndb StringProperty(),我想在其中存储该信息。但是,它会引发 BadValueError 表示它需要一个 UTF-8 编码的字符串。我尝试使用 str 的 .encode('uft-8') 方法,但这也会引发一个错误,告诉我它无法编码,因为定位不好。

无论如何,我的问题是,我怎样才能将该字节字符串转换为可以存储在 ndb 中的内容?

【问题讨论】:

  • 你也可以对你的哈希进行base64编码,并在你去使用它们时解码
  • 是的,我是在换完东西后才想到的。哦!

标签: python google-app-engine


【解决方案1】:

改进的答案:

在这种情况下,您应该使用 BlobProperty 来存储未解释的字节字符串,而不是将密钥存储为字符串或文本。

原答案:

要将字节(字符串)转换为 unicode,请使用方法 decode。您还需要使用一种保留原始二进制数据的编码,即 ISO-8859-1。见ISO-8859-1 encoding and binary data preservation

unicode_key = key.decode('iso-8859-1')
bytes_key = unicode_key.encode('iso-8859-1')

考虑也使用 A TextProperty,因为 StringProperties 已被索引。

【讨论】:

  • 您需要执行 unicode_key.encode('iso-8859-1') 来获取原始字节。在这种情况下经过一番思考后,最好的选择是改用 BlobProperty。查看更新。
  • 谢谢。我最终使用了 TextProperty,因为 BlobProperty 期望 str 并且解码和编码为 iso-8859-1 产生 unicode
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
  • 2021-12-23
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多