1

パスワードをソルトする必要があるアプリケーションがあります。塩を生成するために、使用することにしましたSecureRandom。Windowsマシンを使用している場合、すべてがうまく機能します。次に、Linux ベースのマシン (Centos 5) でコードを実行しようとしましたが、すべてが壊れました。

問題を切り分けて、次のテスト ケースを作成しました。

public static void main(String[] args)  {
    SecureRandom sr = new SecureRandom();
    byte[] saltBytes = new byte[256];
    sr.nextBytes(saltBytes);
    String salt = new String(saltBytes);
    System.out.println(salt.length());
}

Windows では出力は常に 256 ですが、私の Linux マシンでは出力が変化し、256 になることはありません。常に 256 よりも短いソルトが生成されるようです。

なぜこれが起こるのか誰にも分かりますか?

解決:

新しい文字列行を次のように変更しましたnew String(saltbytes, "ASCII");

4

1 に答える 1