java基础
来源:互联网 发布:2017程序员笔记本 编辑:程序博客网 时间:2024/06/11 03:04
最近在用MD5的时候,在byte[] 转成String类型的时候
b.toString是调用了b这个object对象的类的toString方法。一般是返回这么一个String:[class name]@[hashCode]。
new String(b)是根据parameter是一个字节数组,使用java虚拟机默认的编码格式,将这个字节数组decode为对应的字符。若虚拟机默认的编码格式是ISO-8859-1,按照ascii编码表即可得到字节对应的字符。
例如:
package com.solex.workflow;
import java.security.MessageDigest;
public class MD5test {
public String MD5(String s) {
try {
//将字符串转为byte数组
byte[] b = s.getBytes();
//获取MessageDigest对象,申明使用MD5算法进行加密(还有SHA算法)
MessageDigest md = MessageDigest.getInstance("MD5");
//输入报文
md.update(b);
//生成摘要
byte[] bytes = md.digest();
return byte2str(bytes);
} catch (Exception exception) {
exception.printStackTrace();
return null;
}
}
/* 把字节数组转为16进制字符串 */
public String byte2str(byte[] b) {
char[] hexNumsStr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
int len = b.length;
char[] result = new char[len * 2];
int k = 0;
for (int i = 0; i < len; i++) {
result[k++] = hexNumsStr[b[i] >>> 4 & 0xf];
result[k++] = hexNumsStr[b[i] & 0xf];
}
return new String(result);
}
public static void main(String[] args){
MD5test md5test=new MD5test();
System.out.print(md5test.MD5("13579"));
}
}
结果为:E13DD027BE0F2152CE387AC0EA83D863
但是:
package com.solex.workflow;
import java.security.MessageDigest;
public class MD5test {
public String MD5(String s) {
try {
//将字符串转为byte数组
byte[] b = s.getBytes();
//获取MessageDigest对象,申明使用MD5算法进行加密(还有SHA算法)
MessageDigest md = MessageDigest.getInstance("MD5");
//输入报文
md.update(b);
//生成摘要
byte[] bytes = md.digest();
return byte2str(bytes);
} catch (Exception exception) {
exception.printStackTrace();
return null;
}
}
/* 把字节数组转为16进制字符串 */
public String byte2str(byte[] b) {
char[] hexNumsStr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
int len = b.length;
char[] result = new char[len * 2];
int k = 0;
for (int i = 0; i < len; i++) {
result[k++] = hexNumsStr[b[i] >>> 4 & 0xf];
result[k++] = hexNumsStr[b[i] & 0xf];
}
return result.toString();
}
public static void main(String[] args){
MD5test md5test=new MD5test();
System.out.print(md5test.MD5("13579"));
}
}
结果为:[C@38a97b0b
PS:new String()一般用于转码的时候使用
toString()一般用于打印的时候使用
- Java基础01:基础
- Java基础:基础加强
- Java基础-基础
- java基础的基础
- JAVA基础---基础常识
- Java基础:基础加强
- [Java 基础]基础语法
- Java基础
- java基础
- java 基础
- java基础
- Java基础
- Java基础
- Java基础
- JAVA基础
- JAVA基础
- JAVA基础
- java基础
- github branch 常见用法
- MyBatis解决字段名和实体类属性名不相同冲突问题时返回查询结果为空
- 解决eclipse中启动Tomcat成功但是访问不了Tomcat问题
- 时间序列数据库的秘密(2)——索引
- React-Native 指定模拟器RUN-IOS
- java基础
- Chisel的安装与使用
- win10系统下mysql-5.7.19-winx64.zip安装配置教程
- minicom+ckermit的使用
- mybatis 的懒加载原理
- 相关子查询(关联子查询)和嵌套子查询
- 简单了解进程和线程的区别
- Oracle学习笔记 -- day09 PL/SQL语法之触发器
- OTA和Recovery系统升级流程介绍