一般的なものには、データベース ユーザー パスワード、SMS プラットフォーム ユーザー パスワード、システム間検証用の固定パスワードなどが含まれます。
このツール クラスは、書籍『Spring.3.x Enterprise Application Development Practice』のセクション 5.3 の実装を参照します。
完全なコードと注釈情報は次のとおりです。
次のようにコードをコピーします。
パッケージ com.cncounter.util.comm;
java.security.Keyをインポートします。
インポート java.security.SecureRandom;
javax.crypto.Cipherをインポートします。
javax.crypto.KeyGeneratorをインポートします。
sun.misc.BASE64Decoder をインポートします。
sun.misc.BASE64Encoder をインポートします。
パブリック クラス DESUtils {
// 鍵
プライベート静的キー キー。
// キーシード
プライベート静的文字列 KEY_STR = "[email protected]";
// 絶え間ない
public static Final String UTF_8 = "UTF-8";
パブリック静的最終文字列 DES = "DES";
// 静的初期化
静的{
試す {
// キージェネレーター
KeyGenerator ジェネレーター = KeyGenerator.getInstance(DES);
//初期化、安全なランダム演算子
generator.init(new SecureRandom( KEY_STR.getBytes(UTF_8) ));
// キーを生成する
キー = ジェネレーター.generateKey();
ジェネレーター = null;
} catch (例外 e) {
新しい RuntimeException(e) をスローします。
}
}
/**
* ソース文字列を暗号化し、BASE64 でエンコードされた暗号化文字列を返します。
* @param ソース ソース文字列、プレーンテキスト
* @return 暗号文文字列
*/
public static String encode(String ソース){
試す {
// エンコード形式に従ってバイト配列を取得します
byte[] ソースバイト = ソース.getBytes(UTF_8);
// DES 暗号化モード
暗号 cipher = Cipher.getInstance(DES);
cipher.init(Cipher.ENCRYPT_MODE, キー);
// 暗号化されたバイト配列
byte[] encryptSourceBytes = cipher.doFinal(sourceBytes);
// Base64 エンコーダ
BASE64Encoderbase64Encoder = 新しい BASE64Encoder();
戻りbase64Encoder.encode(encryptSourceBytes);
} catch (例外 e) {
// throw はリターンパスとみなすこともできます
新しい RuntimeException(e) をスローします。
}
}
/**
※このツールクラスのencode()メソッドで暗号化された文字列を復号/復号します
* @param encrypted 暗号化された文字列、つまり暗号文
* @return プレーンテキスト文字列
*/
public static String decode(String encrypted){
// Base64 デコーダ
BASE64Decoderbase64Decoder = new BASE64Decoder();
試す {
// 最初にbase64をデコードします
byte[] cryptedBytes = Base64Decoder.decodeBuffer(暗号化);
// DES 復号化モード
暗号 cipher = Cipher.getInstance(DES);
cipher.init(Cipher.DECRYPT_MODE, キー);
//デコードされたバイト配列
byte[] decryptStrBytes = cipher.doFinal(cryptedBytes);
// 指定されたエンコード形式を使用してバイト配列を文字列に変換します
新しい文字列を返します(decryptStrBytes, UTF_8);
} catch (例外 e) {
// この形式は確かに処理ツール クラスに適しています
新しい RuntimeException(e) をスローします。
}
}
// 単体テスト
public static void main(String[] args) {
//暗号化する必要がある文字列
文字列メール = "[email protected]";
//暗号化する
暗号化された文字列 = DESUtils.encode(email);
// 復号化
文字列復号化 = DESUtils.decode(encrypted);
// 結果を出力します。
System.out.println("電子メール: " + 電子メール);
System.out.println("暗号化: " + 暗号化);
System.out.println("復号化: " + 復号化);
System.out.println("email.equals(復号化): " + email.equals(復号化));
}
}