ファイルにパスワードを隠すための最良の技術/方法を見つけようとしていますが、外部のjarやライブラリは使用しません。
実際には、ユーザー名とパスワードのリストを表す 1 つのオブジェクトを使用します。私のリストをxmlに変換し(メモリ内のみ)、その後、AESでファイルに保存します。
Java 7 のみを使用し、外部ライブラリは使用しません。
良い/安全な方法はありますか? この操作がうまくいかない場合、xml 暗号化を動的に作成することはできますか?
ありがとう
ファイルにパスワードを隠すための最良の技術/方法を見つけようとしていますが、外部のjarやライブラリは使用しません。
実際には、ユーザー名とパスワードのリストを表す 1 つのオブジェクトを使用します。私のリストをxmlに変換し(メモリ内のみ)、その後、AESでファイルに保存します。
Java 7 のみを使用し、外部ライブラリは使用しません。
良い/安全な方法はありますか? この操作がうまくいかない場合、xml 暗号化を動的に作成することはできますか?
ありがとう
CipherOutputStreamでラップされたFileOutputStreamを使用できます。
次の理由により、AES で暗号化されたパスワードを保存することはあまり安全ではありません。
1) 鍵はどこに保管しますか? サーバーに保存すると、攻撃者がサーバーに侵入してキーを見つけた場合、ユーザー情報に完全にアクセスできます。
2) 本当にユーザーのパスワードを知る必要がありますか? 多くのアプリケーションでは、セキュリティ上の理由から、パスワードのハッシュのみを保持することをお勧めします。ユーザー名はプレーンテキストで保存でき、パスワードにソルトを追加して強制することもできます。Java7 プラットフォームが提供するいくつかのアルゴリズムでそれを行うことができます。このように、誰かがあなたのサーバーに侵入したとしても、ハッシュ関数を壊さずにユーザーのログイン情報を使用することはできません.
これが私のために働いた例です:
public byte[] getHash(String password, byte[] salt, String algorithm) throws NoSuchAlgorithmException, UnsupportedEncodingException {
MessageDigest digest = MessageDigest.getInstance(algorithm);//The String rapresents the alg you want to use: for example "SHA-1" or "SHA-256"
digest.reset();
digest.update(salt);
return digest.digest(password.getBytes("UTF-8"));
}
より完全な例については、次のリンクを参照することもできます: https://www.owasp.org/index.php/Hashing_Java