【问题标题】:Hash MD5 in ElixirElixir 中的哈希 MD5
【发布时间】:2016-03-21 15:19:19
【问题描述】:

在 Elixir 中你可以得到一个字符串的 md5:

ex(1)> :crypto.hash(:md5 , "Elixir") |> Base.encode16()
"A12EB062ECA9D1E6C69FCF8B603787C3"

但为什么不从终端返回相同的值?

[~ ~]$echo 'Elixir' | md5
694f56f4b30e60837151723777795fc2

当然我错过了什么。

【问题讨论】:

标签: elixir


【解决方案1】:

echo 命令将包含一个新行:

iex>:crypto.hash(:md5, "Elixir\n") |> Base.encode16()
"694F56F4B30E60837151723777795FC2"

可以使用case修改Base.encode16的大小写:

iex>:crypto.hash(:md5, "Elixir\n") |> Base.encode16(case: :lower)
"694f56f4b30e60837151723777795fc2"

您可以使用-n 标志和echo 来阻止新行:

$ echo -n 'Elixir' | md5sum
a12eb062eca9d1e6c69fcf8b603787c3  -

【讨论】:

  • 你也可以参考djm.org.uk/posts/…
  • md5 实际上会吐出带有不可打印字符的二进制数据。为了使它几乎可读,每个程序都将二进制转换为基数 16,它由 16 个字符(0-9,a-f)组成。
猜你喜欢
  • 2012-08-17
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 2020-12-08
  • 2019-04-24
  • 2011-06-18
  • 1970-01-01
相关资源
最近更新 更多