JAVA中常用的加密算法(Hash、base64、MD5、ASC)

在此總結完善一下JAVA中常用的 加密算法,並且包含JAVA加密,JS頁面解密操作


一、JAVA中常用的加密算法

/**
	 * 哈希加密
	 * 
	 * @param strSrc
	 *            需要加密的字符串
	 * @param encName
	 *            需要採用的加密方式,如:SHA-1,SHA-256,SHA-256等等
	 * @return
	 */

	private static final Logger log = LoggerFactory.getLogger(EncryptUtil.class);

	public static String Encrypt(String strSrc, String encName) {
		MessageDigest md = null;
		String strDes = null;
		byte[] bt = strSrc.getBytes();
		try {
			md = MessageDigest.getInstance(encName);
			md.update(bt);
			strDes = bytes2Hex(md.digest()); // to HexString
		} catch (NoSuchAlgorithmException e) {
			log.error(e.getMessage());
			return null;
		}
		return strDes;
	}

	public static String bytes2Hex(byte[] bts) {
		String des = "";
		String tmp = null;
		for (int i = 0; i < bts.length; i++) {
			tmp = (Integer.toHexString(bts[i] & 0xFF));
			if (tmp.length() == 1) {
				des += "0";
			}
			des += tmp;
		}
		return des;
	}

	/**
	 * 將二進制數據編碼爲BASE64字符串
	 * 
	 * @param binaryData
	 * @return
	 */
	public static String encode(byte[] binaryData) {
		try {
			return new String(Base64.encodeBase64(binaryData), "UTF-8");
		} catch (UnsupportedEncodingException e) {
			log.error(e.getMessage());
			return null;
		}
	}

	/**
	 * 將BASE64字符串恢復爲二進制數據
	 * 
	 * @param base64String
	 * @return
	 */
	public static byte[] decode(String base64String) {
		try {
			return Base64.decodeBase64(base64String.getBytes("UTF-8"));
		} catch (UnsupportedEncodingException e) {
			log.error(e.getMessage());
			return null;
		}
	}



	 /** 
     * MD5加密 
     * @param message 要進行MD5加密的字符串 
     * @return 加密結果爲32位字符串 
     */  
    public static String getMD5(String message) {  
        MessageDigest messageDigest = null;  
        StringBuffer md5StrBuff = new StringBuffer();  
        try {  
            messageDigest = MessageDigest.getInstance("MD5");  
            messageDigest.reset();  
            messageDigest.update(message.getBytes("UTF-8"));  
              
            byte[] byteArray = messageDigest.digest();  
            for (int i = 0; i < byteArray.length; i++)   
            {  
                if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)  
                    md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));  
                else  
                    md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));  
            }  
        } catch (Exception e) {  
            throw new RuntimeException();  
        }  
        return md5StrBuff.toString().toUpperCase();//字母大寫  
    }  


      
    /** 
     * MD5加密,加密結果採用Base64進行編碼 
     * @param message 要進行MD5加密的字符串 
     * @return 
     */  
    public static String getMD5ByBase64(String message) {  
        MessageDigest md= null;  
        try {  
            md= MessageDigest.getInstance("MD5");  
            byte md5[]=md.digest(message.getBytes());  
            BASE64Encoder base64=new BASE64Encoder();  
            return base64.encode(md5);  
        } catch (Exception e) {  
            throw new RuntimeException();  
        }  
    }  
      
}


二、JAVA中加密,前端頁面JS解密



JAVA代碼部分

org.apache.commons.codec.binary.Base64

 /** 
     * 密鑰 
     */  
    private static final String KEY = "shortUrlPwssword"; 

/** 
     * aes加密 
     * @param content 
     * @return 
     * @throws IOException 
     * @throws GeneralSecurityException 
     */  
    public static String aesEncrypt(String content){  
        return aesEncrypt(content, KEY);  
    } 

/** 
     * AES加密爲base 64 code 
     * @param content 待加密的內容 
     * @param encryptKey 加密密鑰 
     * @return 加密後的base 64 code 
     * @throws Exception 
     */  
    public static String aesEncrypt(String content, String encryptKey){  
        return base64Encode(aesEncryptToBytes(content, encryptKey));  
    }

/** 
     * base 64 encode 
     * @param bytes 待編碼的byte[] 
     * @return 編碼後的base 64 code 
     */  
    public static String base64Encode(byte[] bytes){  
        return Base64.encodeBase64String(bytes);  
    }




JS部分

 <script type="text/javascript" src="js/aes.js"></script>   
 <script type="text/javascript" src="js/mode-ecb.js"></script>

	 //加密
	function Encrypt(word){
		//解密需要用到的密鑰
		 var key = CryptoJS.enc.Utf8.parse("shortUrlPwssword");	

		 var srcs = CryptoJS.enc.Utf8.parse(word);
		 var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
         return encrypted.toString();
	}
	//解密
	function Decrypt(word){
		 //解密需要用到的密鑰
		 var key = CryptoJS.enc.Utf8.parse("shortUrlPwssword");	

		 var decrypt = CryptoJS.AES.decrypt(word, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
		 return CryptoJS.enc.Utf8.stringify(decrypt).toString();
	}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章