まず、ツール
1. MD5暗号化ツール
パッケージ加密Tester.util。
インポートjava.security.MessageDigestの、パブリッククラスMD5Utils {
プライベート静的最終的な文字列hexDigIts [] = { "0"、 "1"、 "2"、 "3"、 "4"、 "5"、 "6"、 "7 」、 "8"、 "9"、 "A"、 "B"、 "C"、 "D"、 "E"、 "F"}。
/ ** * MD5加密* @param原点字符* @paramたcharsetName编码* @return * /
パブリック静的な文字列MD5Encode(文字列原点、ストリングたcharsetName){
文字列resultString = NULL;
試す{
resultString =新しい文字列(原点);
するMessageDigest MD = MessageDigest.getInstance( "MD5")。
(ヌル==たcharsetName || ""の場合。
等しい(たcharsetName)){ resultString = byteArrayToHexString(md.digest(resultString.getBytes()))。
}他{
resultString = byteArrayToHexString(md.digest(resultString.getBytes(たcharsetName)))。
}
}キャッチ(例外e){
}
戻りresultString。
}
公共の静的な文字列byteArrayToHexString(バイトB []){
StringBufferのresultSb =新規のStringBuffer();
以下のために(; iはてb.lengthを<; I = 0 int型私は++){
resultSb.append(byteToHexString(B [I]))。
}
)(resultSb.toString返します。
}
公共の静的な文字列byteToHexString(バイトB){
int型N = B。
IF(N <0){
N + = 256。
}
INT D1 = N / 16。
D2 INT = N%16。
hexDigIts [D1] + hexDigIts [D2]を返します。
}
}
2. base64で暗号化ツール
パッケージ加密Tester.util。
輸入org.apache.commons.codec.binary.Base64;輸入java.io.UnsupportedEncodingException。
パブリッククラスBase64Util {
//字符串编码プライベート静的最終文字列UTF_8 = "UTF-8";
/ ** *加密字符串* @param引数inputData * @return * /
パブリック静的な文字列decodeData(文字列引数inputData){
しようと{
場合(ヌル==引数inputData){
リターンNULL;
}
新しいString(Base64.decodeBase64(inputData.getBytes(UTF_8))、UTF_8)を返します。
}キャッチ(にUnsupportedEncodingException電子){
}
戻りヌル。
}
/ * **暗号化された文字列を復号引数inputData * @param @return * * /
パブリック静的な文字列encodeData(文字列引数inputData){
試み{
IF(引数inputData == nullの){
リターンNULL;
}
(Base64.encodeBase64(新しい新しいStringを返しますinputData.getBytes(UTF_8))、UTF_8);
}キャッチ(にUnsupportedEncodingException E){
}
の戻りはnull;
}
公共の静的な無効メイン(文字列[] args){
System.out.printlnは(Base64Util.encodeData( "私は中国人です") );
文字列ENSTR = Base64Util.encodeData( "私は中国人だ");
System.out.printlnは(Base64Util.decodeData(ENSTR));
}
}
3. bcryptのツール
パッケージ加密Tester.util;輸入java.util.HashMapを、輸入java.util.Map;輸入org.apache.commons.lang3.StringUtils;輸入org.mindrot.bcrypt.BCrypt;パブリッククラスBcryptCipher {
//塩の種がプライベート生成静的最終int型SALT_SEED = 12。
// =「$ 2A $ 12」塩プライベート静的最終文字列SALT_STARTSWITH FOヘッド。
= "塩"のpublic static final String型のSALT_KEY。
= "暗号"のpublic static final String型のCIPHER_KEY。
/ ** * bcryptの暗号化アルゴリズム方式* @param encryptSource
*文字列を暗号化する必要があるマップ@return、マップ内の2つの値は、塩及び暗号* /
パブリック静的地図<文字列、文字列> bcryptの(最終的な文字列encryptSource){
文字列塩= BCrypt.gensalt(SALT_SEED)。
地図<文字列、文字列> bcryptResult = bcryptの(塩、encryptSource)。
bcryptResultを返します。
}
/ ** *
* @param塩暗号塩、規則に適合しなければならない
* @param encryptSource * @return * /
パブリック静的地図<文字列、文字列> bcryptの(最終的な文字列塩、最終的な文字列encryptSource){
(StringUtils.isBlank場合(encryptSource))は{
( "bcryptの暗号入力のparamsを空にすることはできません")新規のRuntimeExceptionを投げます。
}
IF(StringUtils.isBlank(塩)|| salt.length()= 29!){
新規のRuntimeExceptionを投げる( "塩は空にできず、長さは29でなければなりません")。
}
{(!salt.startsWith(SALT_STARTSWITH))なら
新しいRuntimeExceptionをスロー( "無効な塩のバージョンを、塩のバージョンが$ 2A $ 12であり");
}
文字列の暗号= BCrypt.hashpw(encryptSource、塩)。
地図<文字列、文字列> bcryptResult =新しいHashMapの<文字列、文字列>();
bcryptResult.put(SALT_KEY、塩)。
bcryptResult.put(CIPHER_KEY、暗号化)。
bcryptResultを返します。
}
}
第二に、暗号化テスト
1. MD5暗号化テスト
パッケージの暗号化テスター;
インポート暗号化Tester.util.MD5Utils;
/ * ** MD5暗号化* /
publicクラスMD5Test {
公共の静的な無効メイン(文字列[] args){
文字列= "I単語";
文字列byteArrayToHexString = MD5Utils。 byteArrayToHexString(するString.getBytes());
のSystem.out.println(byteArrayToHexString); // e68891e698afe4b880e58fa5e8af9d
}
}
2. base64で暗号化テスト
パッケージの暗号化テスター;
インポートjava.util.Base64;
インポート暗号化Tester.util.Base64Util;
/ Base64で暗号化** * * /
publicクラスBast64Tester {
公共の静的な無効メイン(文字列[] args){
文字列は=「文字Iであります文字列「;
文字列encodeData Base64Util.encodeData =(文字列);
//暗号化
文字列decodeData = Base64Util.decodeData(encodeData);
//復号化
するSystem.out.println(encodeData);
// 5oiR5piv5LiA5Liq5a2X56ym5Liy
するSystem.out.println(decodeData)。
//私は、文字列です
}
}
3. SHA暗号化テスト
パッケージ加密テスター。
輸入org.apache.commons.codec.digest.Sha2Crypt;
/ ** * SHA加密* / publicクラスShaTest {
パブリック静的無効メイン(文字列[] args){
文字列= "我是一句话"。
ストリングsha256Crypt = Sha2Crypt.sha256Crypt(するString.getBytes())。
System.out.println(sha256Crypt); // $ 5 $ AFoQTeyt $ TiqmobvcQXjXaAQMYosAAO4KI8LfigZMGHzq.Dlp4NC
}
}
4. bcryptの暗号化テスト
パッケージ加密テスター。
インポートにjava.security.SecureRandom;
輸入java.util.Map;
輸入java.util.UUID。
輸入加密Tester.util.BcryptCipher。
輸入加密Tester.util.MD5Utils。
/ ** * bcryptの加密* / publicクラスBCryptTest {
パブリック静的無効メイン(文字列[] args){
文字列= "我是一句话"。
地図<文字列、文字列> bcryptの= BcryptCipher.Bcrypt(文字列);
System.out.println(bcrypt.keySet())。// [暗号、塩]
のSystem.out.println(bcrypt.get( "暗号化"))。//$2a$12$ylb92Z84gqlrSfzIztlCV.dK0xNbw.pOv3UwXXA76llOsNRTJsE/。
System.out.println(bcrypt.get( "塩")); // $ 2A $ 12 $ ylb92Z84gqlrSfzIztlCV。
地図<文字列、文字列> bcrypt2 = BcryptCipher.Bcrypt(bcrypt.get( "塩")、
System.out.println(bcrypt2.get( "SALT_KEY")); //ヌル
するSystem.out.println(bcrypt2.get( "CIPHER_KEY")); //ヌル
}
}