2017-01-17 10 views
0

私はSHA-1からSHA-512に変更してセキュリティを強化しようとしていますが、変更の方法を完全には明確にしていません。SHA-1からSHA-512への変更

これは、SHA-1との私の方法です:

public static String sha1Convert(String password) { 
      try { 
       MessageDigest crypt = MessageDigest.getInstance("SHA-1"); 
       crypt.reset(); 
       crypt.update(password.getBytes("UTF-8")); 
       return byteToHex(crypt.digest()); 
      } catch (NoSuchAlgorithmException | UnsupportedEncodingException ex) { 
       Logger.getLogger(UserLoginManaged.class.getName()).log(Level.SEVERE, null, ex); 
       return null; 
      } 
     } 

これは私がやっている方法であるが、そのは完全に良い取り組んであれば、私はわからない(ので、私は何か間違ったことをやっている場合、私は申し訳ありません)。私はsha-1をsha-512に変更していますが、私のアプリケーションにログオンしようとすると、パスワードが間違っていることがわかります。だから私は方法が間違っているかどうか、あるいは私がただ何かについて無知であるかどうかはわかりません。

public static String sha512Convert(String password) { 
    try { 
     MessageDigest sh = MessageDigest.getInstance("SHA-512"); 
     sh.reset(); 
     sh.update(password.getBytes()); 
     StringBuilder sb = new StringBuilder(); 
     for (byte b : sh.digest()) sb.append(Integer.toHexString(0xff & b)); 
     return sb.toString(); 
    } catch (NoSuchAlgorithmException e) { 
     Logger.getLogger(UserLoginManaged.class.getName()).log(Level.SEVERE, null, e); 
     throw new RuntimeException(e); 
    } 
} 

答えて

2

パスワードセキュリティの観点から、SHA-1とSHA-512の違いはほとんどなく、どちらも1us以下で計算できます。 SHA-1からアップグレードする理由はありますが、これは1つではありません。

パスワード保護のためにハッシュを使用しないでください。PBKDF2(別名Rfc2898DeriveBytes)、password_hash/password_verify、Bcryptなどの機能を使用してください。

最近、1000万語の単語リストからパスワードを試してみると、パスワードが「クラッキング」されています。パスワードをハッシュする時間は、ラップトップでは<であり、攻撃者はそれよりもはるかに速くなります。それがスピアフィッシングでない限り、攻撃者は最も簡単な90%に満足します。

ポイントは、攻撃者が無差別にパスワードを見つけるのに多くの時間を費やすことです。

ユーザーを保護することは重要です。安全なパスワード方法を使用してください。

+0

SHA-512に変更する唯一の理由は、セキュリティが向上しているわけではありません。しかしそれはただのものだった。まだコメントありがとう – Lea

関連する問題