public final class SecurityUtil {private SecurityUtil() {}/*** 默认算法密钥*/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("解密错误,错误信息:", 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("加密错误,错误信息:", e);}}/*** 数据解密,算法(DES)* * @param cryptData 加密数据* @return 解密后的数据*/public static final String decryptDes(String cryptData) {return decryptDes(cryptData, ENCRYPT_KEY);}/*** 数据加密,算法(DES)* * @param data 要进行加密的数据* @return 加密后的数据*/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("加密错误,错误信息:", 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("加密错误,错误信息:", e);}}/*** HMAC加密* * @param data* @return* @throws Exception*/public static final String encryptHMAC(String data) {return encryptHMAC(data, ENCRYPT_KEY);}/*** 数据解密,算法(DES)* * @param cryptData 加密数据* @return 解密后的数据*/public static final String decryptDes(String cryptData, byte[] key) {String decryptedData = null;try {// 把字符串解码为字节数组,并解密decryptedData = new String(DESCoder.decrypt(decryptBASE64(cryptData), key));} catch (Exception e) {throw new RuntimeException("解密错误,错误信息:", e);}return decryptedData;}/*** 数据加密,算法(DES)* * @param data 要进行加密的数据* @return 加密后的数据*/public static final String encryptDes(String data, byte[] key) {String encryptedData = null;try {// 加密,并把字节数组编码成字符串encryptedData = encryptBASE64(DESCoder.encrypt(data.getBytes(), key));} catch (Exception e) {throw new RuntimeException("加密错误,错误信息:", 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("加密错误,错误信息:", e);}}/*** RSA签名* * @param data 原数据* @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("签名错误,错误信息:", e);}}/*** RSA验签* * @param data 原数据* @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("验签错误,错误信息:", e);}}/*** 数据加密,算法(RSA)* * @param data 数据* @return 加密后的数据*/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("解密错误,错误信息:", e);}}/*** 数据解密,算法(RSA)* * @param cryptData 加密数据* @return 解密后的数据*/public static final String decryptRSAPublic(String cryptData, String publicKey) {try {// 把字符串解码为字节数组,并解密return new String(RSACoder.decryptByPublicKey(decryptBASE64(cryptData), decryptBASE64(publicKey)));} catch (Exception e) {throw new RuntimeException("解密错误,错误信息:", 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("-------列出加密服务提供者-----");// 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("-------列出系统支持的消息摘要算法:");// for (String s : Security.getAlgorithms("MessageDigest")) {// System.out.println(s);// }// System.out.println("-------列出系统支持的生成公钥和私钥对的算法:");// for (String s : Security.getAlgorithms("KeyPairGenerator")) {// System.out.println(s);// }}
}

数据加密辅助类(默认编码UTF-8)相关推荐

  1. Unicode(UTF-8, UTF-16)令人混淆的概念 和 python unicode转中文及转换默认编码

    Unicode(UTF-8, UTF-16)令人混淆的概念 [转载](https://www.cnblogs.com/fnlingnzb-learner/p/6163205.html) 为啥需要Uni ...

  2. Myeclipse中修改项目默认编码还是乱码?一步永久解决!

    在myeclipse中修改默认编码后发现项目还是乱码? 点击Windows选择Preferences 如下图

  3. mysql 运行sql 编码_关于解决运行 sql 文件时, 找不到 MySQL 默认编码 utf8mb4 的问题...

    关于解决运行 sql 文件时, 找不到 MySQL 默认编码 utf8mb4 的问题 本人小白一名, 最近碰到了一个问题, 在 navicat 导入 MySQL 文件时, 报出 MySQL 找不到 u ...

  4. FileReader采用的默认编码

    很久以前听教学视频,里面讲到Java采用的默认编码是ISO-8859-1,一直记着. 但是最近重新看IO流的时候,惊讶地发现,在不指定字符编码的情况下,FileReader居然可以读取内容为中文的文本 ...

  5. MyEclipse默认编码为GBK,修改为UTF8的方法

    MyEclipse 默认编码居然是GBK,js文件默认编码是ISO-.... 怎么可以这样呢? 都修改成UTF8的方法: 1.windows->Preferences...打开"首选项 ...

  6. MyEclipse设置JSP页面默认编码方式

    MyEclipse设置JSP页面默认编码方式以及设置在Java文件中作者.日期等说明 MyEclipse设置JSP页面默认编码方式: windows(窗口)-Preferences(首选项)-MyEc ...

  7. python unicode编码转换中文_python unicode转中文及转换默认编码

    一. 在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8"转换为中文,实际上这是unicode的中文编码.可 ...

  8. wamp php字符编码,关于Apache默认编码错误 导致网站乱码的解决方案

    最近经常有同学在使用LAMP/WAMP时,遇到这样的编码错误问题: A网站程序编码UTF-8编码安装成功,运行成功. B网站程序编gb2312也要安装在同一服务器上. 这样就出现问题了,Apache默 ...

  9. 修改Eclipse/MyEclipse项目的默认编码

    应该是中文操作系统的原因,eclipse默认的新项目的编码是GBK,出于对编码支持的考虑,项目组中最好统一要求是UTF-8编码进行开发. 修改eclipse的配置,可以使得eclipse的新建项目的默 ...

最新文章

  1. 计算机视觉及深度学习_面试问题(一)
  2. 2018.10.30-dtoj-4008-纸牌游戏(cards)
  3. upload file more than 4MB
  4. cobaltstrike生成一个原生c,然后利用xor加密解密执行
  5. android布局属性,Android 布局学习之——LinearLayout属性baselineAligned的作用及baseline...
  6. html canvas直线进度条,js+HTML5 canvas 实现简单的加载条(进度条)功能示例
  7. (转) intellij idea部署web项目时的位置(Tomcat)
  8. python怎么创建变量_创建一个新变量,它是python中另一个变量的...
  9. 计算机桌面保护程序,屏幕保护程序软件
  10. 警惕!!类似的QQ诈骗手段层出不穷
  11. 台湾大学林轩田机器学习基石课程学习笔记16(完结) -- Three Learning Principles
  12. Windows服务器应该如何保持长时间连接不断开。
  13. LLC谐振变换器学习二
  14. PS:成功解决photoshop无法直接拖入图片
  15. 宋分题——Java实现登录窗口 和 信息录入窗口
  16. 使用Charles和iPhone进行微信小程序抓包详解
  17. 最全数学各个分支简介
  18. 敏捷开发 vs 传统开发
  19. PostgreSQL 报ERROR: column c.relhasoids does not exist
  20. LeetCode 648. 单词替换

热门文章

  1. bind安装配置以及应用
  2. Bigtable:一个分布式的结构化数据存储系统(转)
  3. 关于人工智能引擎的最初分析文档
  4. MFC入门(一)——MFC是一个编程框架
  5. H.264边缘块进行帧内预测时,上边缘和左边缘块的预测情况。
  6. halcon模板匹配干扰边缘消除办法(最硬核方式)
  7. Inpainting图像修复halcon算子,持续更新
  8. 有限元ansys/lsdyna学习笔记-01
  9. 网博士自助建站系统_自助建站:自助建站到底好还是不好?
  10. 计算机专业书籍速读方法,格式你玩的转?速读5分钟就懂