2017-04-01 13 views
2

私のjavaウェブアプリケーションでは、管理者アカウントはパスワードが暗号化されるユーザアカウントを作成し、StandardPasswordEncoderクラスを使用すると簡単です。しかし、私はすでにMySQLデータベースに格納されている管理者パスワードを暗号化する方法は?管理者パスワードを暗号化する方法は?

+0

なぜ暗号化されたパスワードで管理者パスワードを編集しないのですか? –

+0

あなたはmysqlで直接編集できますか?私のJavaコントローラクラスのパスワードエンコーダ.. – Shahril

+0

あなたはMD5 AESを使用しているか、あなたのJavaコントローラでは何ですか?あなたが話している –

答えて

2

私はすでにmysqlに格納されている管理者パスワードを暗号化する方法 データベース?

あなたのパスワードを編集することができます。私は唯一の唯一の管理者パスワードを暗号化する場合

UPDATE table_name SET pass = MD5(pass); 
-- --------------------------^^^------- 
-- This can be any Standard encryption algorithm, you can check the link above 

あなたはおよそEncryption and Compression Functions

どのように見てみることができますか?他のユーザ パスワードは、Javaコントローラクラスの管理者によって暗号化されます。

あなたが管理者と一般ユーザーの違いを作る、あなたのテーブルの列を追加することができます例えば、マスター管理者のようなあなたのパスワードをマークすることができ、あなたがこのような場合には1つの管理者アカウントを大企業を持って検討していません十分な数の管理者アカウントが必要です。この欄のベースに、管理者アカウントをアルゴリズムで暗号化し、他のものを別のアルゴリズムで暗号化することができます。 SHA-256

を使用して


暗号化パスワードは、私は、管理者パスワードを暗号化するために管理し、しかし、私はウェブアプリでStandardPasswordEncoderクラスだって私のウェブ アプリにログインできません を使用していますあなたの中で、サイドのコードとデータベースの両方で同じalgothmを使用する必要がありますので、SHA-256ハッシュアルゴリズム

SHA-256は、!= MD5が、これは明らかです

CODE

public static String sha256(String base) { 
    try { 
     MessageDigest digest = MessageDigest.getInstance("SHA-256"); 
     byte[] hash = digest.digest(base.getBytes("UTF-8")); 
     StringBuilder hexString = new StringBuilder(); 

     for (int i = 0; i < hash.length; i++) { 
      String hex = Integer.toHexString(0xff & hash[i]); 
      if (hex.length() == 1) { 
       hexString.append('0'); 
      } 
      hexString.append(hex); 
     } 

     return hexString.toString(); 
    } catch (UnsupportedEncodingException | NoSuchAlgorithmException ex) { 
     throw new RuntimeException(ex); 
    } 
} 

これは、このように管理者が暗号化されます:あなたはSHA-256を使用している場合は、私はあなたがこのような関数を使用していると仮定

admin = 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 

DATABASE

だからあなたのデータベースでは、あなたのようなあなたのパスワードを暗号化する必要がありますこの:更新クエリは次のようになります。

SELECT SHA2('admin', 256); 

:管理者は、SHA-とパスワードを暗号化する場合

UPDATE table_name SET pass = SHA2(pass, 256) WHERE admin_master = true; 
-- -------------Field to check if it is admin or not ---^ 

だから、あなたはあなたの中にログインしようとするが、それは管理者であるかどうかを確認する必要がありますユーザが存在するかどうかをチェックし、そうでない場合は、事前確率アルゴリズムをチェックする。

これはあなたのアイデアを与えることができます。

+0

に答えているのMD5のような標準的なもののようなものでしょうか?他のユーザーのパスワードを使用すると、管理者としてのユーザー権限を指定する列を持っている場合は、 UPDATE TABLE_NAMEのSETパスを行うことができます= MD5(合格)WHERE previlage =「管理者」Javaコントローラクラス.. – Shahril

+0

に管理者によって暗号化されます。 –

+2

あなたが管理者と一般ユーザーの違いを作る、あなたのテーブルの列を追加することができ、たとえば、マスター管理者のようなあなたのパスワードをマークすることができます@Shahril、あなたは1つの管理アカウントは十分ではありません。この場合、大企業を持って検討し、あなたは多くの管理者acoountsを必要とし、このカラムの底にあなたが別のアルゴリズムをアルゴリズムと他の人と管理者アカウントを暗号化することができ、あなたのアイデア –

関連する問題