【发布时间】:2011-12-26 17:36:06
【问题描述】:
我正在使用带有谷歌应用引擎的 python 2.7 创建一个小应用程序,并且我正在尝试存储类似于...的哈希值...
import hashlib
def PassHash(self):
return hashlib.sha256(
hashlib.sha256(self.username).digest() + self.password
).hexdigest() + ''
这会返回一个十六进制字符串,然后我尝试将其存储在这样的类中:
class User(db.Model):
UserName = db.StringProperty()
Password = db.StringProperty(multiline = True)
Email = db.EmailProperty()
def Authenticate(self):
UserList = User.gql("WHERE UserName = :username and Password = :password",
username = self.UserName,
password = self.PassHash())
return UserList.count() == 1
def Register(self):
self.Password = self.PassHash()
print self.Password
return db.put(self)
这适用于前几个测试用例,但之后我得到了这个异常:
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 28: character maps to <undefined>
我怀疑问题可能出在 gql 查询中。我考虑过只使用 openid,但这对于了解一般情况下的操作很有用。我已经尝试了几种不同的散列函数变体,但都没有运气。我是否遗漏了一些关于可以存储在 StringProperty() 属性中的内容?
【问题讨论】:
标签: python google-app-engine sha