0

我有以下代碼加密密碼,但是當我試圖對其進行解碼,我不明白這裏的預期的結果代碼。解密散列密碼

BASE64Encoder encoder = new BASE64Encoder(); 
String afterhex=toSHA1("mypassword".getBytes()); 
String encodedBytes = encoder.encodeBuffer(afterhex.getBytes()); 

public static String toSHA1(byte[] convertme) { 
    MessageDigest md = null; 
    try { 
     md = MessageDigest.getInstance("SHA-1"); 
    } catch (NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } 
    return new String(md.digest(convertme)); 
} 

例如,如果你試圖編碼,吉爾你應該得到LQBIF2TS0FSDYtGjaNmC2gl/klw=

有什麼建議給恢復回來:)

+4

你不解密哈希值。 – Woot4Moo

+1

**哈希!=加密!** – SLaks

+0

這是無法回答的,因爲您無法解密哈希。 –

回答

8

散列算法是不加密/解密算法。

散列是映射大的數據集的可變長度(例如消息),以更小的數據集的固定長度(散列)中的單程過程。長度取決於散列算法。

而且它是不可能執行逆向操作從哈希回到您的消息。

即使它是有可能找到一個消息產生相同的哈希值(使用rainbow tables例如,更容易爲弱哈希算法,如MD5),你永遠不知道如果消息是等同於原來這被用來生成散列。散列按摩(密碼)時的方法的一個這防止發現(猜測)的消息(密碼)生成相同的哈希值使用salt

編輯

我也會推薦任何布魯斯的例如書籍「加密工程:設計原則和實際應用」(寫在一個很不錯易消化方式),將描述很詳細的加密和散列。

+3

+1爲好的答案。然而,他們可以通過使用彩虹桌或蠻力攻擊來破解。 – Smit

+1

@smit我認爲這個詞被破解被濫用,發現碰撞更爲正確。 – Woot4Moo

+0

@ Woot4Moo不能得到關於特定單詞的想法。 ; - } – Smit