我需要做一個SHA1哈希,唯一的選擇是使用JavaScript(由於使用第三方產品我的客戶) 的SHA1需要傳遞一些信息給支付網關。所以下面的信息需要被傳遞到SHA1轉換爲哈希(用戶名,密碼,金額),然後傳遞到支付網關使用javascript sha1安全嗎?
我的問題是是否安全?即不能人們只是查看源代碼並看到我正在哈希的東西?這是推薦?有沒有其他方法可以做到這一點?
感謝
我需要做一個SHA1哈希,唯一的選擇是使用JavaScript(由於使用第三方產品我的客戶) 的SHA1需要傳遞一些信息給支付網關。所以下面的信息需要被傳遞到SHA1轉換爲哈希(用戶名,密碼,金額),然後傳遞到支付網關使用javascript sha1安全嗎?
我的問題是是否安全?即不能人們只是查看源代碼並看到我正在哈希的東西?這是推薦?有沒有其他方法可以做到這一點?
感謝
無論使用的哈希算法,與瀏覽器端JavaScript,你的用戶會總是能夠查看網頁的源文件,看看你是散列的事情。
如果你在服務器端散列,則源文本不會透露給瀏覽器。要「反轉」SHA-1哈希是非常困難的,但不是「不可能的」 - 只要有足夠的蠻力,你至少可以找到哈希碰撞(產生相同哈希的另一個字符串)。
爲了大多數目的,SHA-1被認爲足夠安全。然而,對於主要的資金充足的對手來說,這並不被認爲是安全的 - 幾百萬美元可以僱傭足夠的雲計算資源來相對快速地破壞SHA-1散列,隨着計算能力的增加,這將變得越來越便宜。
如果涉及密碼,您應該查看BCrypt。
不,不這樣做!
密碼散列應該讓別人誰複製了你的數據庫無法使用的登錄信息。通過在客戶端進行哈希處理,您具有數據庫中的確切值,需要在請求中發送該值。因此,攻擊者只會禁用散列並將數據庫值用作密碼。
密碼哈希的快速概述:
每個用戶都有一個密碼,你的服務知道。他們用它來登錄。想象一下,你存儲在純文本。如果有人複製你的數據庫,那將會很糟糕。所以你用一個像md5或者sha1這樣的算法來散列每個密碼。散列不能用於重新創建密碼,但如果密碼有效,則可以檢查密碼。問題解決了?
不完全。爲散列算法創建彩虹表很簡單。這樣您可以快速查找每個散列的可能輸入值。所以你鹽。這意味着每個用戶在散列之前都有一個隨機字符串附加到密碼,爲每個用戶創建一個獨特的散列函數。完美解決方案
再次不是。如果您的數據庫被複制,並具有足夠的計算能力,則可能會被破解。所以你最後一步是使用迭代。你不只是追加salt和散列,而是你得到這個結果,再次追加salt並再次散列。你做了幾百次。這樣一來攻擊者暴力攻擊就變得更加昂貴。這是什麼bcrypt呢。隨着時間的推移,計算能力增加,所以你應該增加迭代次數。
這個問題有一些問題: 1.沒有什麼可以說服務器端的(散列)密碼沒有被正確地散列和醃製/再次/。你不知道這一點,所以這只是一個假設。 2.用戶沒有提及散列用於認證的任何地方。這又是一個假設。 問題是,「不能人們只是查看源代碼並看到我正在哈希的東西」 - 這個問題沒有詢問服務器安全性或身份驗證。 –
是的,我可能會回答不同的問題:) – fafl
這是沒有足夠的信息繼續下去。 – Alnitak
已更新問題 – user2206329
因此,第三方產品以純文本格式存儲密碼? – fafl