3

こんにちは、java から mysql に安全にリンクする方法に興味があります。私が理解できない唯一のことは、パスワードをプレーンテキストから遠ざける方法です! どんな助けも素晴らしいです。

4

4 に答える 4

6

MySQL Connector/J 8.0 ドキュメントのこのセクションでは、SSL とクライアント証明書を使用して JDBC 接続を保護する方法について説明します。そうすれば、パスワードをまったく使用する必要がなくなります。

于 2013-08-25T01:37:39.483 に答える
1

データベース接続にはJDBCを使用します。の限り

パスワードを平文にしない

プレーンテキストのパスワードがどこかにある場合、どのように接続することを期待しますか? 生成された 128 ビットのパスワードを使用して、それを暗号化するだけです。プロジェクトの一部ではないプログラムがロードするプロパティファイルがあり、そこから取得することはできますか?

もう 1 つの方法は、パスワードを完全にバイパスする SSH 認証を使用することです。

于 2013-08-25T01:22:36.417 に答える
0

MessageDigest Classのドキュメントを見てください:

この MessageDigest クラスは、MD5 や SHA などのメッセージ ダイジェスト アルゴリズムの機能をアプリケーションに提供します。メッセージ ダイジェストは、任意のサイズのデータ​​を受け取り、固定長のハッシュ値を出力する安全な一方向ハッシュ関数です。

呼び出しgetInstance("MD5")て、使用できる MD5 メッセージ ダイジェストを取得します。

于 2013-08-25T01:27:53.497 に答える
-1

まあ、それはそれほど難しいことではありません。MYSQL コネクタをダウンロードしてパスに追加し、次のように PreparedStatement を起動するだけです。

Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager
      .getConnection("jdbc:mysql://localhost/dbname?"
          + "user=myusername&password=mypassword");
PreparedStatement preparedStatement = connect
      .prepareStatement("select * from employees");
 ResultSet resultSet = preparedStatement.executeQuery();

while (resultSet.next()) {
  //display text
}
preparedStatement.close();
connect.close();

その後、resultSet.getString() などを実行して必要な値を取得し、列が多すぎてテーブルが揮発性である場合に、それらを必要なものにキャストできます。そうでない場合は、getInteger()、getDouble() などを使用できます。

ここでもっと調べてください:

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html

これで、ハッシュ戦略を使用してパスワードをハッシュする、つまりマスクすることができます。値を取得するために、現在のコードがリンクしている別のパッケージにこのコードを含めることができます。

https://crackstation.net/hashing-security.htm

于 2013-08-25T01:33:29.350 に答える