【问题标题】:Need MD5 guideline需要 MD5 指南
【发布时间】:2010-04-14 11:36:25
【问题描述】:

MD5的编解码有没有具体的算法。请给我正确的方向或指南,以便我继续前进。我在谷歌上搜索了很多但我没有找到,请给文章或教程链接。

【问题讨论】:

  • 您想自己实现MD5,还是只想在您的应用程序中使用MD5?几乎每种语言都有 MD5 的实现,因此您不必实现它,除非您的兴趣纯粹是学术性的。
  • 我想实现MD5,所以首先我想了解一下算法,因为我今天之前没有听过MD5。

标签: encryption encoding md5


【解决方案1】:

MD5 是一种散列算法,根据定义(应该是)不可解码的。有关算法的描述,请阅读Wikipedia

但是,您很少需要自己实现算法,因为大多数平台都带有实现。

第一个谷歌点击:http://sourceforge.net/projects/libmd5-rfc/

【讨论】:

  • 我正在使用 ANSI C,在 ANSI C 中是否有任何用于 MD5 的库??
【解决方案2】:

MD5,不“编码”或“解码”。 MD5 将可变大小的输入(高达许多 TB)转换为固定大小的输出(128 位,也就是 16 字节)。 MD5的要点是不允许计算逆变换。

MD5 specification 简短易读,包含测试向量和 C 实现。许多编程语言/环境已经包含 MD5 实现。还有许多独立的密码库提供各种语言的 MD5 实现;您可能想看看sphlib,其中包含 C 和 Java 中针对 MD5 的优化代码。

但请注意,MD5 现在被认为是加密弱的。特别是,已经找到了有效计算冲突的方法(两个不同的输入具有相同的输出),这是一个好的哈希函数不应该允许的(任何哈希函数都必然存在冲突,但实际计算这种冲突应该是不可行的; 对于 MD5,这很容易 [在基本 PC 上大约需要 14 秒的 CPU])。

【讨论】:

  • 如果MD5不能逆变换,那么MD5的目的是什么?只固定大小?我们可以在哪里使用 MD5??
  • 散列函数(如MD5)的重点是将文档的单向摘要计算为固定大小的格式。这是计算数字签名或许多完整性检查程序的第一步。 MD5不是加密函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 2022-06-23
  • 1970-01-01
相关资源
最近更新 更多