数据加密辅助类(默认编码UTF-8)
生活随笔
收集整理的這篇文章主要介紹了
数据加密辅助类(默认编码UTF-8)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
public final class SecurityUtil {private SecurityUtil() {}/*** 默認(rèn)算法密鑰*/private static final byte[] ENCRYPT_KEY = { -81, 0, 105, 7, -32, 26, -49, 88 };public static final String CHARSET = "UTF-8";/*** BASE64解碼* * @param key* @return* @throws Exception*/public static final byte[] decryptBASE64(String key) {try {return new BASE64Encoder().decode(key);} catch (Exception e) {throw new RuntimeException("解密錯(cuò)誤,錯(cuò)誤信息:", e);}}/*** BASE64編碼* * @param key* @return* @throws Exception*/public static final String encryptBASE64(byte[] key) {try {return new BASE64Encoder().encode(key);} catch (Exception e) {throw new RuntimeException("加密錯(cuò)誤,錯(cuò)誤信息:", e);}}/*** 數(shù)據(jù)解密,算法(DES)* * @param cryptData 加密數(shù)據(jù)* @return 解密后的數(shù)據(jù)*/public static final String decryptDes(String cryptData) {return decryptDes(cryptData, ENCRYPT_KEY);}/*** 數(shù)據(jù)加密,算法(DES)* * @param data 要進(jìn)行加密的數(shù)據(jù)* @return 加密后的數(shù)據(jù)*/public static final String encryptDes(String data) {return encryptDes(data, ENCRYPT_KEY);}/*** 基于MD5算法的單向加密* * @param strSrc 明文* @return 返回密文*/public static final String encryptMd5(String strSrc) {String outString = null;try {outString = encryptBASE64(MDCoder.encodeMD5(strSrc.getBytes(CHARSET)));} catch (Exception e) {throw new RuntimeException("加密錯(cuò)誤,錯(cuò)誤信息:", e);}return outString;}/*** SHA加密* * @param data* @return* @throws Exception*/public static final String encryptSHA(String data) {try {return encryptBASE64(SHACoder.encodeSHA256(data.getBytes(CHARSET)));} catch (Exception e) {throw new RuntimeException("加密錯(cuò)誤,錯(cuò)誤信息:", e);}}/*** HMAC加密* * @param data* @return* @throws Exception*/public static final String encryptHMAC(String data) {return encryptHMAC(data, ENCRYPT_KEY);}/*** 數(shù)據(jù)解密,算法(DES)* * @param cryptData 加密數(shù)據(jù)* @return 解密后的數(shù)據(jù)*/public static final String decryptDes(String cryptData, byte[] key) {String decryptedData = null;try {// 把字符串解碼為字節(jié)數(shù)組,并解密decryptedData = new String(DESCoder.decrypt(decryptBASE64(cryptData), key));} catch (Exception e) {throw new RuntimeException("解密錯(cuò)誤,錯(cuò)誤信息:", e);}return decryptedData;}/*** 數(shù)據(jù)加密,算法(DES)* * @param data 要進(jìn)行加密的數(shù)據(jù)* @return 加密后的數(shù)據(jù)*/public static final String encryptDes(String data, byte[] key) {String encryptedData = null;try {// 加密,并把字節(jié)數(shù)組編碼成字符串encryptedData = encryptBASE64(DESCoder.encrypt(data.getBytes(), key));} catch (Exception e) {throw new RuntimeException("加密錯(cuò)誤,錯(cuò)誤信息:", e);}return encryptedData;}/*** HMAC加密* * @param data* @return* @throws Exception*/public static final String encryptHMAC(String data, byte[] key) {try {return encryptBASE64(HmacCoder.encodeHmacSHA512(data.getBytes(CHARSET), key));} catch (Exception e) {throw new RuntimeException("加密錯(cuò)誤,錯(cuò)誤信息:", e);}}/*** RSA簽名* * @param data 原數(shù)據(jù)* @return*/public static final String signRSA(String data, String privateKey) {try {return encryptBASE64(RSACoder.sign(data.getBytes(CHARSET), decryptBASE64(privateKey)));} catch (Exception e) {throw new RuntimeException("簽名錯(cuò)誤,錯(cuò)誤信息:", e);}}/*** RSA驗(yàn)簽* * @param data 原數(shù)據(jù)* @return*/public static final boolean verifyRSA(String data, String publicKey, String sign) {try {return RSACoder.verify(data.getBytes(CHARSET), decryptBASE64(publicKey), decryptBASE64(sign));} catch (Exception e) {throw new RuntimeException("驗(yàn)簽錯(cuò)誤,錯(cuò)誤信息:", e);}}/*** 數(shù)據(jù)加密,算法(RSA)* * @param data 數(shù)據(jù)* @return 加密后的數(shù)據(jù)*/public static final String encryptRSAPrivate(String data, String privateKey) {try {return encryptBASE64(RSACoder.encryptByPrivateKey(data.getBytes(CHARSET), decryptBASE64(privateKey)));} catch (Exception e) {throw new RuntimeException("解密錯(cuò)誤,錯(cuò)誤信息:", e);}}/*** 數(shù)據(jù)解密,算法(RSA)* * @param cryptData 加密數(shù)據(jù)* @return 解密后的數(shù)據(jù)*/public static final String decryptRSAPublic(String cryptData, String publicKey) {try {// 把字符串解碼為字節(jié)數(shù)組,并解密return new String(RSACoder.decryptByPublicKey(decryptBASE64(cryptData), decryptBASE64(publicKey)));} catch (Exception e) {throw new RuntimeException("解密錯(cuò)誤,錯(cuò)誤信息:", e);}}public static void main(String[] args) throws Exception {System.out.println(encryptDes("SHJR"));System.out.println(decryptDes("INzvw/3Qc4q="));System.out.println(encryptMd5("SHJR"));System.out.println(encryptSHA("1"));Map<String, Object> key = RSACoder.initKey();String privateKey = encryptBASE64(RSACoder.getPrivateKey(key));String publicKey = encryptBASE64(RSACoder.getPublicKey(key));System.out.println(privateKey);System.out.println(publicKey);String sign = signRSA("132", privateKey);System.out.println(sign);String encrypt = encryptRSAPrivate("132", privateKey);System.out.println(encrypt);String org = decryptRSAPublic(encrypt, publicKey);System.out.println(org);System.out.println(verifyRSA(org, publicKey, sign));// System.out.println("-------列出加密服務(wù)提供者-----");// Provider[] pro = Security.getProviders();// for (Provider p : pro) {// System.out.println("Provider:" + p.getName() + " - version:" +// p.getVersion());// System.out.println(p.getInfo());// }// System.out.println("");// System.out.println("-------列出系統(tǒng)支持的消息摘要算法:");// for (String s : Security.getAlgorithms("MessageDigest")) {// System.out.println(s);// }// System.out.println("-------列出系統(tǒng)支持的生成公鑰和私鑰對(duì)的算法:");// for (String s : Security.getAlgorithms("KeyPairGenerator")) {// System.out.println(s);// }}
}
?
總結(jié)
以上是生活随笔為你收集整理的数据加密辅助类(默认编码UTF-8)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android | Sqlite3
- 下一篇: 量化选股模型—多因子模型