2016-09-19 92 views
0

我一直试图写在二郎的MD5摘要算法和不知道如何实现这一步,计算MD5哈希值在二郎山

1. creating 16 octet MD5 hash of X where X is a string. 

有人能帮忙吗?

这是否意味着这样的:

Create a 16 byte(32-hex digits) of base - 8(octet) which is md5 of X. ? 

谢谢!

+0

答案是肯定的。请注意,一个字符串也可能意味着八位字符串或位串(尽管大多数库只处理字节,但原则上位串也是可能的)。 –

回答

2

使用crypto模块和hash函数,可以计算MD5这是一个16字节的摘要算法。

密码:散列(类型,数据) - >文摘

Type = md5 

Data = iodata() 

Digest = binary() 

它得到一个md5原子作为类型和iodata()作为数据,并返回一个binary()作为摘要。下面的代码片段是一个简单的例子:

crypto:hash(md5, "put-your-string-here"). 

检查crypto documentation了解更多信息。

另外为了将返回的二进制值转换为十六进制字符串,标准库中没有函数,但它很简单,只需在this thread中很好地解释的几行代码即可。

+0

感谢您的回答。所以我知道它返回一个二进制格式,所以我创建了一个函数,给出了如下所示的等效字符串表示形式: md5:hexstring(crypto:hash(md5,“hello”))。 “5d41402abc4b2a76b9719d911017c592” 不过,林不知道X的感谢 – sad

+0

@sad的16个字节的MD5哈希值,看看这个:http://rosettacode.org/wiki/MD5#Erlang –

+0

@Atomic_alarm我明白了。由于erlang返回二进制,我们应该转换为十六进制字符串。我能够做到这一点使用io_lib:格式转换为十六进制。但是我的担心是这样的: 创建X的十六进制MD5散列,其中X是一个字符串。 你能解释一下这是什么意思吗?谢谢 – sad