一、工具类
1, md5加密工具类
2, base64加密工具类
3, Bcrypt工具类
二、加密测试

  1. MD5加密测试
  2. base64加密测试
  3. SHA加密测试
  4. BCrypt加密测试
    一、工具类
    1, md5加密工具类
public class MD5Utils {private static final String hexDigIts[] = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};/*** MD5加密* @param origin 字符* @param charsetname 编码* @return*/public static String MD5Encode(String origin, String charsetname){String resultString = null;try{resultString = new String(origin);MessageDigest md = MessageDigest.getInstance("MD5");if(null == charsetname || "".equals(charsetname)){resultString = byteArrayToHexString(md.digest(resultString.getBytes()));}else{resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));}}catch (Exception e){}return resultString;}public static String byteArrayToHexString(byte b[]){StringBuffer resultSb = new StringBuffer();for(int i = 0; i < b.length; i++){resultSb.append(byteToHexString(b[i]));}return resultSb.toString();}public static String byteToHexString(byte b){int n = b;if(n < 0){n += 256;}int d1 = n / 16;int d2 = n % 16;return hexDigIts[d1] + hexDigIts[d2];}}

2, base64加密工具类

public class Base64Util {// 字符串编码private static final String UTF_8 = "UTF-8";/*** 加密字符串* @param inputData* @return*/public static String decodeData(String inputData) {try {if (null == inputData) {return null;}return new String(Base64.decodeBase64(inputData.getBytes(UTF_8)), UTF_8);} catch (UnsupportedEncodingException e) {}return null;}/*** 解密加密后的字符串* @param inputData* @return*/public static String encodeData(String inputData) {try {if (null == inputData) {return null;}return new String(Base64.encodeBase64(inputData.getBytes(UTF_8)), UTF_8);} catch (UnsupportedEncodingException e) {}return null;}public static void main(String[] args) {System.out.println(Base64Util.encodeData("我是中文"));String enStr = Base64Util.encodeData("我是中文");System.out.println(Base64Util.decodeData(enStr));}
}

3, Bcrypt工具类

public class BcryptCipher {// generate salt seedprivate static final int SALT_SEED = 12;// the head fo saltprivate static final String SALT_STARTSWITH = "$2a$12";public static final String SALT_KEY = "salt";public static final String CIPHER_KEY = "cipher";/*** Bcrypt encryption algorithm method* @param encryptSource* need to encrypt the string* @return Map , two values in Map , salt and cipher*/public static Map<String, String> Bcrypt(final String encryptSource) {String salt = BCrypt.gensalt(SALT_SEED);Map<String, String> bcryptResult = Bcrypt(salt, encryptSource);return bcryptResult;}/**** @param salt encrypt salt, Must conform to the rules* @param encryptSource* @return*/public static Map<String, String> Bcrypt(final String salt, final String encryptSource) {if (StringUtils.isBlank(encryptSource)) {throw new RuntimeException("Bcrypt encrypt input params can not be empty");}if (StringUtils.isBlank(salt) || salt.length() != 29) {throw new RuntimeException("Salt can't be empty and length must be to 29");}if (!salt.startsWith(SALT_STARTSWITH)) {throw new RuntimeException("Invalid salt version, salt version is $2a$12");}String cipher = BCrypt.hashpw(encryptSource, salt);Map<String, String> bcryptResult = new HashMap<String, String>();bcryptResult.put(SALT_KEY, salt);bcryptResult.put(CIPHER_KEY, cipher);return bcryptResult;}}

二、加密测试
1, MD5加密测试

/*** MD5加密*/
public class MD5Test {public static void main(String[] args) {String string = "我是一句话";String byteArrayToHexString = MD5Utils.byteArrayToHexString(string.getBytes());System.out.println(byteArrayToHexString);//e68891e698afe4b880e58fa5e8af9d}
}
  1. base64加密测试
/*** base64加密*/
public class Bast64Tester {public static void main(String[] args) {String string = "我是一个字符串";String encodeData = Base64Util.encodeData(string); //加密String decodeData = Base64Util.decodeData(encodeData); //解密System.out.println(encodeData);//5oiR5piv5LiA5Liq5a2X56ym5LiySystem.out.println(decodeData);//我是一个字符串}
}
  1. SHA加密测试
/**SHA(Secure Hash Algorithm,安全散列算法),* 数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域。* 虽然,SHA与MD5通过碰撞法都被破解了, 但是SHA仍然是公认的安全加密算法,较之MD5更为安全。*/
public class ShaTest {public static void main(String[] args) {String string = "我是一句话";String sha256Crypt = Sha2Crypt.sha256Crypt(string.getBytes());System.out.println(sha256Crypt);//$5$AFoQTeyt$TiqmobvcQXjXaAQMYosAAO4KI8LfigZMGHzq.Dlp4NC}
}
  1. BCrypt加密测试
/*** BCrypt加密* Spring Security crypto 项目中使用的 密码验证就是BCrypt*/
public class BCryptTest {public static void main(String[] args) {String string = "我是一句话";Map<String, String> bcrypt = BcryptCipher.Bcrypt(string);System.out.println(bcrypt.keySet()); //[cipher, salt]System.out.println(bcrypt.get("cipher")); //$2a$12$ylb92Z84gqlrSfzIztlCV.dK0xNbw.pOv3UwXXA76llOsNRTJsE/.System.out.println(bcrypt.get("salt")); //$2a$12$ylb92Z84gqlrSfzIztlCV.Map<String, String> bcrypt2 = BcryptCipher.Bcrypt(bcrypt.get("salt"),string);System.out.println(bcrypt2.get("SALT_KEY")); //nullSystem.out.println(bcrypt2.get("CIPHER_KEY")); //null}
}

Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试相关推荐

  1. ios开发中常用的几种辅助方法

    //1.Keychain本地长期键值存储 //删除 +(void)deleteStringForKey:(NSString *)aKey {NSMutableDictionary *query = [ ...

  2. Java开发中常用的设计模式-单例模式

    单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式. Java开发中常用的设计模式-单例模式 单例模式有3个特点: 单例类只有一个实例对象: 该单例对象必须 ...

  3. JAVA 开发中常用的工具有哪些?

    Java开发中常用的工具有以下几种: Eclipse:一款非常流行的开发工具,提供了很多方便的功能,如代码自动补全.调试.版本控制等. IntelliJ IDEA:一款功能强大的Java集成开发环境, ...

  4. java开发中常用的Git命令详解

    java开发中常用的Git命令详解(IDEA内如何操作) 一:写这篇文章的目的是什么? 二:使用场景在哪里? 1:当我们要使用idea去git仓库拉代码时,首先我们的idea得配置git工具 2:项目 ...

  5. java开发中遇到的问题及解决方法(持续更新)

    java开发中遇到的问题及解决方法(持续更新) 参考文章: (1)java开发中遇到的问题及解决方法(持续更新) (2)https://www.cnblogs.com/LiuYanYGZ/p/6112 ...

  6. python中常用的九种预处理方法

    本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...

  7. 嵌入式开发中常用的几种通信接口总结

    关注.星标公众号,直达精彩内容 在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线. 以下内容为常用板上通信接口:包括I2C.SPI.UART.1-Wire: I ...

  8. java开发中常用的算法_总结一下项目开发过程中常用的到的一些加密算法。

    一般常用的有: MD5.SHA算法:代码如下 Java代码 /* * Copyright (c) 2008 * All rights reserved. */ packagecn.com.jody.w ...

  9. Java开发中常用的Linux命令

    Linux学习笔记 1,简单说明 2,Linux基本常用命令 2.1,目录管理 2.1.1,列出目录(ls) 2.1.2,切换目录(cd) 2.1.3,创建目录(mkdir) 2.1.4,删除目录(r ...

最新文章

  1. MacApp开发Error Domain=NSURLErrorDomain Code=-1003 A server with the specified hostname could not be
  2. 一个包从服务器到达客户端
  3. Flash as3 以鼠标点为中心缩放效果
  4. 用html设计一个logo页面_如何设计一个Logo?——Bobu Africa旅行品牌Logo设计
  5. Linux(RedHat)下Weblogic 12C静默安装
  6. 用户节点cdn有什么用处
  7. 百万级访问量网站的技术准备工作
  8. PackageInstaller (tv 修改安装app界面按钮及自动获取焦点)附源码分析
  9. 信号与系统中的信号带宽理解
  10. 紧急疏散(python)
  11. 如何快速制作一个漂亮的生日祝福网站
  12. 无线模块数据加密,反码校验,发送字符串ABCDEFGHIJKLMNOP LED频闪
  13. 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第二十一课:Cocos2D-X网格特效1-3
  14. matlab的输入输出
  15. 2022年618活动4000价位笔记本推荐
  16. 《图解番茄工作法》读后感
  17. cydia服务器未响应,为什么cydia打开卡死 如何解决
  18. md5加密工具类cookie登陆验证
  19. 游戏剧本怎么写_我写了一本剧本来帮助设计师使用真实代码构建原型
  20. 漫画 |《帝都老板十二时辰》

热门文章

  1. 计算机网络学习笔记(3.数据链路层 4.网络层)
  2. 64位win7系统中vb工程显示加载MSCOMCTL.OCX失败
  3. android语音记账,爱彼语记语音计算器记账记事本
  4. python123程序设计题说句心里话a_C程序设计基础(2019年春)-中国大学mooc-试题题目及答案...
  5. ISP(图像信号处理)学习笔记-DPC坏点校正
  6. 自然数 素数 质数_素数列表–最多20,000个素数的图表
  7. 官档翻译-启用High Precision Event Timer (HPET) Functionality
  8. python单词库_python 单词库
  9. 高亮显示用户键盘输入(kbd)
  10. 响应式扩展_响应式和无限扩展的JS动画