2017-02-24 5 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を与える必要があります。

しかし、それは実際にあなたがそれをBase64エンコードされているWZRHGrsBESr8wYFZ9sx0tPURuZgG2lmzyvWpwXPKz8U=

+0

値WZRHGrsBESr8wYFZ9sx0tPURuZgG2lmzyvWpwXPKz8U = Base64にHex中5994471ABB01112AFCC18159F6CC74B4F511B99806DA59B3CAF5A9C173CACFC5あります。 Base64の代わりにHexを使用してエンコードするだけです。 – 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

を返します。 16進数でエンコードすると、探している出力が得られます。

0

バイトを64進数でエンコードしています。16進数でエンコードする場合は、Java code To convert byte to Hexadecimalを試してください。あなたが文字列としてデータベースに入れているのであれば、base64はあなたのニーズに合っているはずです。

関連する問題