2011-12-10 18 views
0

で動作するようにハッシュ()関数を取得できません:私はこれを実行しようとすると、私はエラーを取得するは、私は、このコードに問題が持っているのpython 3.2.2

print('insert password below to get a hash') 
pass = int(input('Input passowrd> ') 

hash(pass) 
input() 

を、私はhelp(hash)を試してみました可能であればグーグル・グーグルでは、私はそれを動作させることはできません: -/

問題は何ですか?

+1

あなたはどのようなエラーが発生したか教えてください。 – middus

+2

「パス」は予約語(したがって有効な識別子ではありません)と言われている人はいません。だから、それを強調する! – delnan

答えて

3

私はあなたに2つの問題があると思います。


intへのお電話は、最も可能性の高い例外が発生しますので、まず、pass- 言葉は、通常は整数ではありません。

pass = input('Input password> ') 

第二に、hash機能は、高速比較の目的のためのオブジェクトのためにhash codeを返します。

は、あなたはおそらくこれが欲しいです。 cryptographic hash functionではありません。一般的に使われているアルゴリズムのようなものを使用するか、代わりにSHA-2アルゴリズムファミリーのようなより安全なものを使用することを検討してください。

hashlibを使用すると、暗号的に安全なハッシュを生成できます。例:あなたのニーズに応じて

>>> import hashlib  
>>> hashlib.md5('admin'.encode('utf-8')).hexdigest() 
'21232f297a57a5a743894a0e4a801fc3' 
>>> hashlib.sha256('admin'.encode('utf-8')).hexdigest() 
'8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918' 

、あなたはまた、さらにパスワードを保護するためにsaltを使用して検討する必要があります。

0

今後、表示されるエラーを投稿するのに役立ちます。パスワードがintに変換できないという苦情を受けているのはValueErrorだと思いますが、それはかなり正しいです。

最初に整数に変換する点はありません。文字列の罰金hash作品:

print('Input password below to get a hash:') 
pass = input('Input password> ') 
print(hash(pass)) 
input() 
3

あなたのコードの作品が書かれていますが、それはおそらく(整数のハッシュがちょうど整数そのものである)あなたが期待したものではありませんされています。代わりにこれを試してください:あなたは、パスワードのハッシュ値を格納している場合、また

print('insert password below to get a hash') 
pass_str = input('Input password: ') 
h = hash(pass_str) 

をし、それが安全になりたい、そのようhashlib moduleに見られるものとして、暗号強度の高いハッシュを使用してください:

>>> pass_str = 'the phrase that pays' 
>>> hashlib.sha256(pass_str.encode()).hexdigest() 
'a91ba2a03eb9772b114e6db5c5a114d8a9b3ba419a64cdde9606a9151c8a352e' 
2

passは、Pythonでその名前の変数を持つことはできません。

>>> pass = 1 
SyntaxError: invalid syntax 
>>> 
関連する問題