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

Java 将32位长十六进制转换为6位数字OTP,java,hash,md5,one-time-password,Java,Hash,Md5,One Time Password,如何将以下32位十六进制转换为6位十进制 MD5:9d10f0693b9d8e6c32c33d1e9be377b5 我对某个字段进行了哈希运算以得到上面的结果。但是,我需要生成6位PIN (您的md5不是32位长,而是128位(32个十六进制字符*4位/字符),但它不是简单相关的…抱歉) pin码不会保存散列包含的128位信息,因此必须获取其子部分 我假设您的哈希是一个标准的java字符串 如果您需要pin作为6位整数: int pin = hash.hashCode() % 1e6; 我让您

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

MD5:9d10f0693b9d8e6c32c33d1e9be377b5

我对某个字段进行了哈希运算以得到上面的结果。但是,我需要生成6位PIN

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

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

我假设您的哈希是一个标准的java字符串

如果您需要pin作为6位整数:

int pin = hash.hashCode() % 1e6;
我让您检查此方法是否符合您的“安全”紧急情况:)
希望有帮助

为什么是%1e7?我也有同样的问题,但我必须从该散列中生成一个特定的6位数字…您能帮忙吗?值%1e7是一个模,它将返回除以10'000'000的其余部分。现在最大结果是:9'999'999。如果要生成包含6位数字的管脚编号(人类可读的经典整数),请使用模1e6