Java中md5摘要算法的几种方法
2024-10-16 01:28:49
public class MD5_Test {
public static String md5_1(String oldStr) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
try {
byte[] oldBytes = oldStr.getBytes();
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(oldBytes);
byte[] newBytes = md.digest();
char newStr[] = new char[32];
for (int i = 0; i < 16; i++) {
byte tmp = newBytes[i];
newStr[2 * i] = hexDigits[tmp >>> 4 & 0xf];
newStr[2 * i + 1] = hexDigits[tmp & 0xf];
}
return new String(newStr);
} catch (Exception e) {
return null;
}
} public static String md5_2(String oldStr) {
try {
MessageDigest digest = MessageDigest.getInstance("md5");
byte[] bs = digest.digest(oldStr.getBytes());
String hexString = "";
for (byte b : bs) {
int temp = b & 255;
if (temp < 16 && temp >= 0) {
hexString = hexString + "0" + Integer.toHexString(temp);
} else {
hexString = hexString + Integer.toHexString(temp);
}
}
return hexString;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
} public static String md5_3(String plainText) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
return buf.toString();
// System.out.println("result: " + buf.toString());//32位的加密
// System.out.println("result: " + buf.toString().substring(8,24));//16位的加密
} public static String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException {
// 确定计算方法
MessageDigest md5 = MessageDigest.getInstance("MD5");
BASE64Encoder base64en = new BASE64Encoder();
// 加密后的字符串
String newstr = base64en.encode(md5.digest(str.getBytes("utf-8"))); return newstr;
} public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
System.out.println(md5_1("1"));
System.out.println(md5_2("1"));
System.out.println(md5_2("1"));
}
}
输出结果:
最新文章
- poj 1384 Piggy-Bank(完全背包)
- 学习 jsonp
- json数据处理实战:Kafka+Flume+Morphline+Solr+Hue数据组合索引
- osgearth 配置mapNode TerrainOptions
- linux配置ssh互信
- Greedy_algorithm
- phalcon: 上下文转义
- HDU 4054
- ConcurrentHashMap使用示例
- hdoj 1686 Oulipo【求一个字符串在另一个字符串中出现次数】
- void *memmove( void* dest, const void* src, size_t count );数据拷贝,不需要CPU帮助
- OAuth流程
- NodeJs的简单介绍
- 修长城 (区间DP)
- 使用shell命令给文件中每一行的前面、后面添加字符
- django restframework PrimaryKeyRelatedField筛选的困惑
- SQLSERVER 数据量太大,重启服务器后,数据库显示正在恢复
- 四:(之一和之二) docker架构和底层技术分析(C/S架构)
- natapp 穿透访问 vue项目 Invalid Host header
- Java之线程池和Lambda表达式
热门文章
- Python基础之pytest参数化
- idea 创建Maven项目,Enable auto Import报“本地服务器没有从权威服务器上收到响应”
- python3 f-string格式化字符串的高级用法
- 【填坑往事】使用Rxjava2的distinct操作符处理自定义数据类型去重的问题
- 一个高性能跨平台基于Python的Waitress WSGI Server的介绍!
- NPOI Excel导入Invalid header signature
- windows10双系统删除linux
- Android 12(S) 图形显示系统 - 应用建立和SurfaceFlinger的沟通桥梁(三)
- C++多线程之互斥锁和超时锁
- iOS14新功能一览