【问题标题】:Convert 32 bit long hex to 6 digit number OTP将 32 位长十六进制转换为 6 位数字 OTP
【发布时间】:2013-07-15 18:47:08
【问题描述】:

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

MD5: 9d10f0693b9d8e6c32c33d1e9be377b5

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

【问题讨论】:

    标签: java hash md5 one-time-password


    【解决方案1】:

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

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

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

    如果您需要 6 位整数:

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

    我让您检查此方法是否符合您的“安全”要求 :) 希望有帮助!

    【讨论】:

    • 为什么是 %1e7?我有同样的问题,但我必须从该哈希中生成一个特定的 6 位数字......你能帮忙吗?
    • value % 1e7 是一个模数,它将返回除以 10'000'000 的其余部分。现在的最大结果是:9'999'999。如果要生成包含 6 位数字的密码(人类可读的经典整数),请使用模 1e6
    猜你喜欢
    • 2011-04-30
    • 2011-05-20
    • 1970-01-01
    • 2013-12-26
    • 2011-03-05
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多