2012-03-01 131 views

回答

4

可以從前端應用程序獲取密碼的Hmac SHA256 hex DigestMD5 Digest,使用erlang方法創建一個哈希,然後存儲該哈希。

例如,如果我有一個Web應用程序,我向用戶索要密碼,在創建帳戶時或在登錄時,我使用javaScript創建此密碼的MD5摘要,並沿着線路(HTTPS)發送它,而不是實際密碼。在到達Erlang時,我從JavaScript創建了這個MD5摘要的散列並將其存儲爲用戶密碼。所以,每次用戶嘗試登錄我的頁面時,我都會執行類似的過程,然後將其條目的散列輸出與存儲的條目進行比較。瞭解更多關於SHA256 HMac Digest通過看解決這個問題:HMAC SHA256 hex digest of a string in Erlang, how?,這一個:Erlang and JavaScript MD5 Digest match

+0

因此:我使用前端(例如javascript)執行sha/md5,然後使用erlang:phash2/1,2獲取接收值的散列值。對? – user601836 2012-03-05 10:18:27

+0

是的。實際的密碼永遠不會通過導線傳輸,而是摘要。現在我們創建一個摘要哈希並存儲哈希。從創建帳戶開始,必須完成此操作。因此,無論何時前端出現密碼字段,JavaScript都會創建密碼的SHA1或MD5摘要併發送該密碼,以便Erlang創建一個哈希並將其與所存儲的哈希進行比較(用於登錄)或將其另存爲用戶密碼(用於帳戶創建) – 2012-03-06 04:56:43

1

實際上,你在mnesia中存儲元組(或記錄,它們是相同的),但是在那些記錄的字段中可以存儲任何術語(包括二進制文件)。將它們轉換爲字符串並不是必需的。

5

使用加密:sha/1來散列密碼是危險的。至少有一個鹽,但最好用scrypt,bcrypt或pbkdf2來存儲這樣的密碼。他們很容易受到多次攻擊。不幸的是,我知道沒有Erlang支持這些:/