【发布时间】:2011-11-25 07:26:30
【问题描述】:
如果我使用此 Java 代码生成消息摘要(用于我的应用中的安全功能):
java.security.MessageDigest saltDigest = MessageDigest.getInstance("SHA-256");
saltDigest.update(UUID.randomUUID().toString().getBytes("UTF-8"));
String digest = String.valueOf(Hex.encode(saltDigest.digest()));
我最终得到了一个非常长的字符串,如下所示:
29bcf49cbd57bbc41e601b399a93218ef99c6e36bae3598b5a5a64ac66d9c254
传递 URL 不是最好的方法!
有没有办法缩短这个?
【问题讨论】:
-
您可以使用 Base64 代替简单的十六进制编码。这应该可以节省一些字符。
-
真的,谢谢。我忘了查看该包中的其他类:static.springsource.org/spring-security/site/docs/3.0.x/apidocs/… 我想知道 Base64 会影响摘要的“安全性”程度。如果真的只是几个字符的问题,我想可能不会那么多。
-
由于 Base64 和 Hex 编码表示的信息完全相同,因此内容的安全性不会受到影响。 但是如果某些自动化工具试图处理您的值,那么它可能希望它始终采用相同的格式。
-
好的,我明白了。嗯,这只是在 Spring MVC 应用程序中的 URL 和 HTML 表单帖子中传递的信息。因此,没有依赖于特定格式的自动化工具。它只会与 PK 结合用于数据库查找,以确保只有具有有效权限的人才能修改实体。这是否是一个好主意是另一个问题。但我理解你关于 Hex 和 Base64 如何不改变底层内容的观点。
标签: java string security message-digest