文字列は、MD5を使用して暗号化

  1  パッケージcom.iwhalecloud.retail.enterprise.c.utils;
   2  
  。3  インポートjava.io.UnsupportedEncodingException;
   4  インポートjava.security.MessageDigestの、
   5  インポートjava.security.NoSuchAlgorithmException;
   6  インポートjava.util.regex.Matcher;
   7  インポートjava.util.regex.Patternのは、
   8  
  。9つの パブリック クラスMD5Util {
 10      // バイト配列は、16進文字列に変換する
。11      プライベート 静的文字列byteArrayToHexString(バイトB []){
 12は          StringBufferのresultSb =新しい新規のStringBuffer();
 13である         ためINT ; I <てb.lengthに、I ++ I = 0 14              resultSb.append(byteToHexString(B [I]));
 15  
16          戻りresultSb.toString();
 17      }
 18である 
。19      // 数モジュロ演算市販取る整数である単一バイトの変換
20は、     プライベート 静的文字列byteToHexString(バイトB){
 21は         INT N- = B;
 22である         IF(N <0 23である              N- + = 256 ;
 24          INT D1 = N / 16 25         INT D2 = N-16%;
 26れる         // 外出配列添字D1、D2 hexDigitsデータによる
27          戻り hexdigits [D1] + hexdigits [D2];
 28      }
 29  
30      パブリック 静的文字列MD5Encode(原点ストリング、ストリングたcharsetName){
 31です          ResultString =文字列のNULL ;
 32          試み{
 33は              ResultString = 新しい新しい文字列(原点);
 34れる             // するMessageDigestオブジェクトは、MD5ダイジェストアルゴリズム取得
35              するMessageDigest MessageDigest.getInstance MD =( "MD5"を36              IF(たcharsetName == NULL || "" .equals(たcharsetName))
 37                  // 暗号化されたデータは16進数の文字列に変換された後バイト
38れる                  ResultString = byteArrayToHexString(md.digest(ResultString
 39                          .getBytesを())) ;
 40              
41である                  ResultString = byteArrayToHexString(md.digest(ResultString
 42れる                         .getBytes(たcharsetName)));
 43である          } キャッチ(例外exception){
 44である         }
 45          リターンResultString;
 46である     }
 47  
48     プライベート 静的 最終列hexdigits [] = { "0"、 "1" 、 "2"、" 3" 、 "4" 、" 5" 49              "6" 、" 7" 、 "8" 、" 9" 、 "A"、 "B"、 "C"、 "D"、 "E"、 "F" };
 50      / ** 
51は、      MD5は、文字列(32大文字)を暗号化*
 52れる      *
 53である      * @paramのMD5を必要ストリング暗号化された文字列
 54がある      * @return 暗号化された文字列(上)
 55       * / 
56である     パブリック 静的文字列md5Encrypt32Upper(文字列文字列){
 57は         バイト[]ハッシュ。
58          試み{
 59              // MD5アルゴリズムオブジェクトを作成し、MD5、16バイト×8 = 128の配列を得ること
60              。ハッシュ= MessageDigest.getInstance( "MD5")(するString.getBytes( "UTF-8"ダイジェスト))。
61          } キャッチ(持つNoSuchAlgorithmException電子){
 62               新規のRuntimeException( "許、MD5がサポートすべきか?" 、E)。
63          } キャッチ(にUnsupportedEncodingException電子){
 64               新規のRuntimeException( "ホ、UTF-8がサポートすべきか?" 、E)。
65          }
 66  
67          // 转换为十六进制字符串
68          のStringBuilderヘクス= 新規のStringBuilder(hash.length * 2 )。
69          のためにバイトB:ハッシュ){
 70              IF((B&0xFFで)<0x10の)hex.append( "0" );
 71である              hex.append((B&0xFFでのInteger.toHexString ));
 72          }
 73は、         リターンヘクス。 toString()は、toUpperCase();.
 74      }
 75  
76      / ** 
77       * MD5暗号化された文字列(下ケース32)
 78       *
 79       * @paramの列MD5暗号化文字列の必要性
 80       * @return 暗号化された文字列(小文字)
 81       * / 
82      公共の 静的Md5Encrypt32Lowerストリング(文字列){
 83          // 直接小文字に変換する方法上記
84          リターンmd5Encrypt32Upper(文字列).toLowerCase();
 85      }
 86  
87      / ** 
88       *バイト配列バイナリ進数に紐システム
 89       *
 90       * @param バイトバイナリアレイ
 91である      * @return 進列
 92       * / 
93      パブリック 静的文字列bytesToHex(バイト[]バイト){
 94          のStringBuffer hexstrの= 新しい新規のStringBuffer();
 95          INT NUM;
96          のためにINT iは= 0; bytes.length iは<; iは++ ){
 97              NUM = バイト[I]。
98              であれば(NUM <0 ){
 99                  NUM + = 256 100              }
 101              であれば(NUM <16 ){
 102                  hexStr.append( "0" )。
103              }
 104              hexStr.append(Integer.toHexString(NUM))。
105          }
 106          リターン。hexStr.toString()は、toUpperCase();
107      }
 108  
109      / **
110       *ユニコード中文编码转换成字符串
 111       * / 
112      パブリック 静的文字列unicodeToString(文字列str){
 113          パターン・パターン= Pattern.compile( "(\\\\ U(\\ P {XDIGIT} {4}))" );
114          マッチャーマッチャー= pattern.matcher(STR)。
115          チャーCH。
116          一方(matcher.find()){
 117              CH =(CHAR)Integer.parseInt(matcher.group(2)、16 )。
118              STR = str.replace(matcher.group(1)、CH + "" )。
119          }
 120          戻りSTR。
121     }
 122  
123      公共 静的 ボイドメイン(文字列[]引数){
 124          のSystem.out.println(md5Encrypt32Lower( "123456" ));
125          のSystem.out.println(md5Encrypt32Upper( "123456" ));
126      }
 127 }

 

おすすめ

転載: www.cnblogs.com/zk-blog/p/12612150.html