java – 使用加密哈希函数之前和之后
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用加密哈希函数之前和之后,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1456字,纯文字阅读大概需要3分钟。
内容图文
![java – 使用加密哈希函数之前和之后](/upload/InfoBanner/zyjiaocheng/722/66491014d50149288226d427bd5e67e5.jpg)
在查看了多个用于生成Java MD5和SHA *哈希的在线参考之后,我注意到纯文本(文件串)经历了某些准备工作之前和之后.在将其送入Digest对象以生成哈希值之后.
具体来说,首先将数据转换为字节数组,然后将其提供给摘要,然后将输出哈希转换为十六进制流.
为什么所有这些字节和十六进制转换?
PS:我想答案与Java和Digest对象如何开展业务有关,而我在提出这个问题时的动机是理解这种行为,并可能获得一些文档/文献的参考资料.
丹科!
解决方法:
这有两个部分:
>为什么我们在消化前将String转换为字节数组?
>为什么我们将摘要转换为十六进制?
第一个答案是摘要仅适用于字节数组.他们不了解字符串,数字或任何其他数据类型.只是字节.因此,我们使用String对象并使用某种形式的文本编码(如UTF-8)将其转换为字节数组.
请注意,编码很重要:我可以使用UTF-8,UTF-16或US-ASCII或任意数量的其他编码对字符串“hello world”进行编码.如果我选择UTF-8,它将产生11个字节的输出(因为“hello world”长度为11个字符),但UTF-16将产生22个字节的输出.这两种编码将产生不同的摘要,因此了解编码是非常重要的.
第二个答案是摘要通常用于基于字符串的协议(如HTTP cookie),用于在数据库的文本列中存储密码哈希,用于将PGP签名添加到电子邮件消息等.
由于摘要生成一个原始字节数组,因此需要将其重新编码为文本友好的内容.这就是使用十六进制(或更可能是base-64)的原因.
例如,坚持使用“hello world”示例,假设UTF-8编码的摘要变为具有以下值的字节数组:4 27 125 8 0 22 90 7(对于我神秘的8字节摘要函数).如果我试图将其解释为UTF-8字符串,那么我会得到很多垃圾:0不是可打印的字符.以十六进制编码意味着我可以以有意义的方式将其打印出来,或将其添加到我的PGP电子邮件中,或者其他任何内容.
那有意义吗?
内容总结
以上是互联网集市为您收集整理的java – 使用加密哈希函数之前和之后全部内容,希望文章能够帮你解决java – 使用加密哈希函数之前和之后所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。