13693261870
2022-09-20 a666b5f9741ef9b21f547d3b2141752a0383c70c
src/java/org/apereo/cas/web/landtool/utils/AbstractCoderUtils.java
ÎļþÃû´Ó src/java/org/apereo/cas/web/landtool/utils/CoderUtils.java ÐÞ¸Ä
@@ -9,15 +9,11 @@
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
//import sun.misc.BASE64Decoder;
//import sun.misc.BASE64Encoder;
/**  
 * åŸºç¡€åŠ å¯†ç»„ä»¶  
 * @author TanBin    
 */    
public abstract class CoderUtils {
public abstract class AbstractCoderUtils {
    public static final String KEY_SHA = "SHA";    
    public static final String KEY_MD5 = "MD5";    
    
@@ -37,36 +33,39 @@
     * BASE64加密  
     * @param key  
     * @return  
     * @throws Exception
     * @throws Exception
     *
     * æ³•1:使用sun.misc套件。1.6之前, æ•ˆçŽ‡ä¸å¥½ï¼Œæ–°JDK不支持
     * return (new BASE64Encoder()).encodeBuffer(data);
     *
     * æ³•2:使用Apache Commons Codec。
     * return (new Base64()).encodeToString(data);
     *
     * æ³•3:使用Java 8的java.util套件。  æ•ˆçŽ‡æ˜¯1的11倍,是2的3倍以上。
     */    
    public static String encryptBASE64(byte[] data) {
       //text.getBytes("UTF-8"); new String(decoder.decode(encodedText), "UTF-8")
       //法1:使用sun.misc套件。1.6之前, æ•ˆçŽ‡ä¸å¥½ï¼Œæ–°JDK不支持
//        return (new BASE64Encoder()).encodeBuffer(data);
        //法2:使用Apache Commons Codec。
//        return (new Base64()).encodeToString(data);
        //法3:使用Java 8的java.util套件。  æ•ˆçŽ‡æ˜¯1的11倍,是2的3倍以上。
    public static String encryptBase64(byte[] data) {
        //text.getBytes("UTF-8"); new String(decoder.decode(encodedText), "UTF-8")
        return Base64.getEncoder().encodeToString(data);
    }
    }
    
    /**  
     * BASE64解密  
     * @param key  
     * @return  
     * @throws Exception
     * @throws Exception
     *
     * æ³•1:使用sun.misc套件。 æ•ˆçŽ‡ä¸å¥½ï¼Œæ–°JDK不支持
     * return (new BASE64Decoder()).decodeBuffer(key);
     *
     * æ³•2:使用Apache Commons Codec。
     * return (new Base64()).decode(key);
     *
     * æ³•3:使用Java 8的java.util套件。  æ•ˆçŽ‡æ˜¯1的11倍,是2的3倍以上。
     */    
    public static byte[] decryptBASE64(String key) {
       //法1:使用sun.misc套件。 æ•ˆçŽ‡ä¸å¥½ï¼Œæ–°JDK不支持
//       return (new BASE64Decoder()).decodeBuffer(key);
        //法2:使用Apache Commons Codec。
//      return (new Base64()).decode(key);
      //法3:使用Java 8的java.util套件。  æ•ˆçŽ‡æ˜¯1的11倍,是2的3倍以上。
      return Base64.getDecoder().decode(key);
    }
    public static byte[] decryptBase64(String key) {
        return Base64.getDecoder().decode(key);
    }
    
    /**  
     * MD5加密  
@@ -74,7 +73,7 @@
     * @return  
     * @throws Exception  
     */    
    public static byte[] encryptMD5(byte[] data) throws Exception{
    public static byte[] encryptMd5(byte[] data) throws Exception{
        MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);    
        md5.update(data);    
        return md5.digest();
@@ -86,8 +85,8 @@
     * @return
     * @throws Exception
     */
    public static String lantuEncryptMD5(String text) throws Exception{
       byte[] b = encryptMD5(text.getBytes("UTF-8"));
    public static String lantuEncryptMd5(String text) throws Exception{
       byte[] b = encryptMd5(text.getBytes("UTF-8"));
       String key = convertToHexString(b);
       //转为大写
       key = key.toUpperCase();
@@ -105,7 +104,7 @@
     * @param data
     * @return
     */
    private static String convertToHexString(byte data[]) {
    private static String convertToHexString(byte[] data) {
       StringBuffer strBuffer = new StringBuffer();
       for (int i = 0; i < data.length; i++) {
          //strBuffer.append(Integer.toHexString(0xff & data[i]));   //30bit
@@ -124,7 +123,7 @@
     * @return  
     * @throws Exception  
     */    
    public static byte[] encryptSHA(byte[] data) throws Exception{
    public static byte[] encryptSha(byte[] data) throws Exception{
        MessageDigest sha = MessageDigest.getInstance(KEY_SHA);    
        sha.update(data);    
        return sha.digest();    
@@ -138,7 +137,7 @@
    public static String initMacKey() throws Exception{    
        KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);    
        SecretKey secretKey = keyGenerator.generateKey();    
        return encryptBASE64(secretKey.getEncoded());
        return encryptBase64(secretKey.getEncoded());
    }    
       
    /**  
@@ -148,8 +147,8 @@
     * @return  
     * @throws Exception  
     */    
    public static byte[] encryptHMAC(byte[] data, String key) throws Exception{
        SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
    public static byte[] encryptHmac(byte[] data, String key) throws Exception{
        SecretKey secretKey = new SecretKeySpec(decryptBase64(key), KEY_MAC);
        Mac mac = Mac.getInstance(secretKey.getAlgorithm());    
        mac.init(secretKey);    
        return mac.doFinal(data);    
@@ -159,19 +158,19 @@
        String inputStr = "123456";    
        System.err.println("原文:" + inputStr);    
        try {
         String codeBASE64 = encryptBASE64(inputStr.getBytes("UTF-8"));
         String codeMD5 = lantuEncryptMD5(inputStr);
         byte[] codeSHA = encryptSHA(inputStr.getBytes("UTF-8"));
         String codeBase64 = encryptBase64(inputStr.getBytes("UTF-8"));
         String codeMd5 = lantuEncryptMd5(inputStr);
         byte[] codeSha = encryptSha(inputStr.getBytes("UTF-8"));
         
         String key = initMacKey();    
         System.err.println("Mac密钥:" + key);
         byte[] codeHMAC = encryptHMAC(inputStr.getBytes("UTF-8"), key);
         byte[] codeHmac = encryptHmac(inputStr.getBytes("UTF-8"), key);
         
         System.err.println("\nBASE64:" + codeBASE64);
         System.err.println("BASE64解密:" + new String(decryptBASE64(codeBASE64),"UTF-8"));
         System.err.println("MD5:" + codeMD5);
         System.err.println("SHA:" + codeSHA);
         System.err.println("HMAC:" + codeHMAC);
         System.err.println("\nBASE64:" + codeBase64);
         System.err.println("BASE64解密:" + new String(decryptBase64(codeBase64),"UTF-8"));
         System.err.println("MD5:" + codeMd5);
         System.err.println("SHA:" + codeSha);
         System.err.println("HMAC:" + codeHmac);
         
      } catch (Exception e) {
         // TODO Auto-generated catch block