java - 将 32 位长十六进制转换为 6 位数字 OTP

标签 java hash md5 one-time-password

如何将以下 32 位十六进制转换为 6 位十进制?

MD5:9d10f0693b9d8e6c32c33d1e9be377b5

我对某些字段进行了哈希处理以获得上述内容。但是,我需要生成 6 位 PIN 码。

最佳答案

(您的 md5 不是 32 位长,而是 128(32 个十六进制字符 * 4 位/字符),但它不相关......抱歉)

pin 不会保存散列包含的 128 位信息,因此您必须获取其中的一部分。

我假设你的散列是一个标准的java字符串。

如果您需要 6 位整数形式的 PIN 码:

int pin = hash.hashCode() % 1e6;

我让你检查一下这个方法是否符合你的“安全”需求:) 希望有帮助!

关于java - 将 32 位长十六进制转换为 6 位数字 OTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17696004/

相关文章:

采用种子的 C++ 哈希函数

c# - 基于 .net ComputeHash 的 SQL CLR 函数不适用于 Cyrillic

linux - 终端:将文件内容(电子邮件)转换为MD5

python - 如何在 Python 中有效计算可迭代位的 md5 和?

java 运行时异常 :java. lang.nullPointerException

java.sql.TimeStamp 没有默认构造函数

java - 如何使用 java 从 CPLEX 导出双模型?

oracle - 在perl脚本中调用带有输入参数和输出光标的存储过程

java - java中基于设备时间的md5

java - 使用 jaxb2 基础知识生成 toString 方法时,如何使用绑定(bind)文件排除字段