当前位置: 首页 > 面试题库 >

Java计算String的SHA-1摘要的十六进制表示形式

鲁博赡
2023-03-14
问题内容

我将用户密码作为sha1哈希存储在数据库中。

不幸的是,我得到了奇怪的答案。

我将字符串存储为:

MessageDigest cript = MessageDigest.getInstance("SHA-1");
              cript.reset();
              cript.update(userPass.getBytes("utf8"));
              this.password = new String(cript.digest());

我想要这样的东西->

aff->“ 0c05aa56405c447e6678b7f3127febde5c3a9238”

而不是

aff->``V @ \ D〜fx : 8


问题答案:

发生这种情况是因为cript.digest()返回一个字节数组,您试图将其打印为字符串String。您想将其转换为可打印的十六进制字符串。

简单的解决方案:使用Apache的commons-codec库:

String password = new String(Hex.encodeHex(cript.digest()),
                             CharSet.forName("UTF-8"));


 类似资料:
  • 问题内容: 我正在构建一个Web CMS,用户可以在其中选择某些站点元素的颜色。我想将所有颜色值都转换为十六进制,以避免任何进一步的格式化麻烦(“ rgb(x,y,z)”或命名的颜色)。我为此找到了一个不错的JS库。 我无法进入十六进制的唯一内容是“透明的”。在显式声明一个元素透明时,我需要这样做,根据我的经验,这可能与根本不定义任何值有所不同。 有人知道这是否可以转换为某种数字形式吗?我是否必须

  • 我正在尝试将十六进制数据添加到十六进制字符串中,我需要使用它们的IEEE表示将浮点数添加到该字符串中。对于整数,这很简单: 其中value是数字的VARCHAR,params是包含十六进制字符串的VARCHAR。这个技巧适用于整数,但对于十进制,它会截断十进制部分,并将整数部分转换为十六进制整数。如果十进制的大小是固定的(java float或double),如何将值转换为十进制数的IEEE浮点表

  • 问题内容: 我有一个代表2的补码的十六进制字符串。是否有一种简单的方法(库/函数)将十六进制转换为十进制而不直接使用其位? EG这是给定左侧十六进制的预期输出: 谢谢! 问题答案: 这似乎在欺骗Java转换数字而不强制给出正结果: 当然,这种情况仅适用于8、16、32和64位2的补码:

  • 问题内容: 我有一个家庭作业,需要在十进制,二进制和十六进制之间进行三向转换。我需要帮助的功能是将十进制转换为十六进制。我几乎不了解十六进制,但是如何将十进制转换为十六进制。我需要一个接受并返回的函数。不幸的是我没有此功能的任何草稿,我完全迷路了。我只有这个。 另外,我不能使用诸如Integer.toHexString()之类的预制函数或任何其他东西,我需要真正地制作算法,否则我什么都不会学。 问

  • 我必须生成一个从\x00到\xff的所有十六进制列表,但用户提供的十六进制除外。 示例: GenerateHex.py 00,03 \X01\X02\X04\X05\X06\X07\X08\X09\X0A\X0B\X0C\X0D\X0E\X0F\X10\X11\X12\X14\X15\X17\X18\X19\X1A\X1B\X1B\X1F\X20\X21\X22\X25\X26\X28\X29\X

  • 我试过用 如何在php中计算crc16 CRC16函数的C到PHP转换 我在寻找校验和