2

web2py に保存されているデータ、より正確にはパスワードを暗号化する必要があります。

これは認証に関するものではなく、KeePass のようなアプリケーションに関連するものです。

私はそれが web2py に含まれているのを見てきましたが、M2Secretはそれを簡単に行うことができます。M2Secret では、これを使用できます。

m2secretをインポート

# 暗号化
シークレット = m2secret.Secret()
secret.encrypt('私のデータ', '私のマスターパスワード')
serialized = secret.serialize()

# 復号化
シークレット = m2secret.Secret()
secret.deserialize(シリアライズ)
data = secret.decrypt('私のマスターパスワード')

しかし、アプライアンスに M2Crypto ライブラリを含める必要があります。

すでにweb2pyに含まれているPyMeでこれを行う方法はありますか?

4

1 に答える 1

3

デフォルトでは、web2py は HMAC+SHA512 を使用してハッシュ化されたパスワードを保存するため、何もする必要はありません。暗号化は元に戻せますが、ハッシュは元に戻せないため、提案したメカニズムよりも優れています。これを変更して上記のようにすることはできますが、プレーンテキストを使用するよりも安全ではありません (アプリで暗号化キーを公開する必要があるため)。

ともかく。あなたが持っているとしましょう

db.define_table('mytable',Field('myfield'.'password'))

そして、m2secret を使用したいとします。あなたがするだろう:

class MyValidator:
    def __init__(self,key): self.key=key
    def __call__(self,value):
        secret = m2secret.Secret()
        secret.encrypt(value, self.key)
        return secret.serialize()
    def formatter(self,value):
        secret = m2secret.Secret()
        secret.deserialize(value)
        return (secret.decrypt(self.key),None)

db.mytable.myfield.requires=MyValidator("master password")

web2py では、バリデーターも双方向フィルターです。

于 2010-11-04T12:56:40.837 に答える