import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class JavaMD5 {
public static void main(String[] args) {
String passwordToHash = "MyPassword123";
String generatedPassword = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(passwordToHash.getBytes());
byte[] bytes = md.digest();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
}
generatedPassword = sb.toString();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(generatedPassword);
}
}
这行是问题所在:
sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
每个部分在此结构中起什么作用????
谢谢,我很抱歉询问Beacuse,因为我是Java新手。
大概大多数代码都是清晰的,这里唯一让您感到困惑的是此表达式:
(bytes[i] & 0xff) + 0x100
第一部分:
bytes[i] & 0xff
加宽在位置字节i
到int
的比特位置8-31用零值。在Java中,byte
数据类型是带符号的整数值,因此加宽的符号会扩展该值。如果没有& 0xff
,则大于0x7f的值最终将变为负值int
。剩下的就很明显了:它添加了0x100,它只是打开了索引8的位(因为它保证为0 in
(bytes[i] & 0xff)
。然后String
通过调用转换为十六进制值)Integer.toString(..., 16)
。
首先添加0x100,然后剥离1(通过substring(1)
调用完成,它将子字符串从位置1到末尾开始)的原因是为了保证最终结果中的两个十六进制数字。否则,转换为十六进制时,低于0x10的字节值将以一个字符的字符串结尾。
是否所有性能都比以下更好(尚不清楚)尚有争议:
sb.append(String.format("%02x", bytes[i]));
那么,在Java中,你们都用什么来处理它们呢?
本文向大家介绍请问,hibernate的 save() 和persist() 方法分别是做什么的?有什么区别?相关面试题,主要包含被问及请问,hibernate的 save() 和persist() 方法分别是做什么的?有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 考察点:session Hibernate的对象有三种状态:瞬时态(transient)、持久态(persistent)
本文向大家介绍MySQL由哪些部分组成, 分别用来做什么?相关面试题,主要包含被问及MySQL由哪些部分组成, 分别用来做什么?时的应答技巧和注意事项,需要的朋友参考一下 Server 连接器: 管理连接, 权限验证. 分析器: 词法分析, 语法分析. 优化器: 执行计划生成, 索引的选择. 执行器: 操作存储引擎, 返回执行结果. 存储引擎: 存储数据, 提供读写接口.
问题内容: 我知道,当使用支持异常的语言(例如C ++)时,必须向运行时环境提供其他信息,以描述在处理异常期间必须解开的调用框架。此信息包含在目标文件的特殊部分中,例如和。 但是,这些部分中存储了什么样的数据结构?我的意思是,可以使用任何C结构读取它们吗?难道他们有什么做的语句(如,,,,和在GNU汇编代码)?如果它们这样做,那么这些子句中的每一个在这些部分中引起什么?本节与该节有什么关系? 我希
问题内容: 我正在尝试在以下代码片段中了解0xFF的作用: 有任何想法吗? 问题答案: 是二进制的十六进制常量。通过对该常量使用按位AND(),它仅保留原始的最后8位(在这种情况下,无论如何)。
使用指南 - 分析云 - 分析云能做什么 赋能各业务角色提升工作效能 百度统计分析云能够全面提升客户各职能角色工作效能,助力达成用户全生命周期增长 支持产品进行功能评估提升转化率 产品角色作为产品规划者,重点关注产品的流程设置和功能设计是否给予用户良好的使用体验,并确保用户充分体验产品的核心价值。 支持运营进行用户分群实现精准营销 运营角色重点关注用户构成现状及变化,并从用户行为角度剖析用户的活跃