思考這些下面兩種情況,哪一個是最好的,最安全的一個2加密/散列的情況下,哪一個是最好
第一種情況
//key1 generated from static salt and user password, because in case attacker don't know about source code (bad assumption, but still my assumption), attacker have only hashed or encrypted data + random generated salt
staticSalt = "StaticSalt"
key1 = pbkdf2(userPassword, staticSalt, iteration)
//key2 generated from key1 and randomSalt, this will be actual key to be used for encryption
randomSalt = GenerateRandomSalt()
key2 = pbkdf2(key1, randomSalt, iteration)
aes.Key = Key2
aes.IV = aes.GenerateIV()
或
第二種情況
//directly generate key from randomSalt and password
randomSalt = GenerateRandomSalt()
key1 = pbkdf2(userPassword, randomSalt, iteration)
aes.Key = Key1
aes.IV = aes.GenerateIV()
我的問題是,使用第一種情況是否有任何缺點,它會增加或減少熵,或使得不太安全?
或者第二種情況是遠遠更好的和安全的方式做
尋找一些加密專家的回答。
如果您將其發佈在http://crypto.stackexchange.com/上,您很可能會收到適當的回覆。 –
案例1應該提供的額外步驟有什麼好處?如果這只是你在PBKDF2算法的基礎上拋出的一個含糊不清的想法,比如「更多擾亂更好」,這可能不會有幫助。 – user2357112