2017-02-24 32 views
-1

轉換其實我有一個問題,hashing a password,並試圖在字符串轉換爲把它放在一個數據庫中。哈希Java中的密碼,並試圖在字符串

目前我有這樣的代碼

  MessageDigest digest = MessageDigest.getInstance("SHA-256"); 
      byte[] hash = digest.digest(motsDePasse.getBytes(StandardCharsets.UTF_8)); 
      String fileString = Base64.getEncoder().encodeToString(hash); 

該協議是,它並沒有給我好的哈希。假設我嘗試散列「12345」。它應該給我5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5

但它實際上返回WZRHGrsBESr8wYFZ9sx0tPURuZgG2lmzyvWpwXPKz8U=

+0

爲Base64值WZRHGrsBESr8wYFZ9sx0tPURuZgG2lmzyvWpwXPKz8U =是在十六進制5994471ABB01112AFCC18159F6CC74B4F511B99806DA59B3CAF5A9C173CACFC5。您只需使用Hex代碼而不是Base64編碼 – Ali

回答

1

嘗試使用十六進制編碼器

MessageDigest digest = MessageDigest.getInstance("SHA-256"); 
    byte[] hash = digest.digest("12345".getBytes(StandardCharsets.UTF_8)); 

    String hex = DatatypeConverter.printHexBinary(hash); 
    System.out.println(hex); 

輸出

5994471ABB01112AFCC18159F6CC74B4F511B99806DA59B3CAF5A9C173CACFC5

+0

您的解決方案可以運行。謝謝 –

0

您Base64編碼它。如果你用十六進制編碼它,你會得到你正在尋找的輸出。