Я создаю небольшое приложение, используя python 2.7, с движком приложений Google и пытаюсь сохранить хеш, похожий на ...
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 ()?