我正在寻找与.NET方法System.Web.Helpers.Crypto.VerifyHashedPassword等效的Lua或C语言。我正在解决的问题是由.NET应用程序创建的密码哈希,但需要让Lua应用程序处理身份验证。
.NET类的源代码可用here但似乎在Lua或C中重建将会相当深入和困难。
Lua中现有的加密库似乎没有解决这个问题。
感谢任何帮助!
答案 0 :(得分:1)
我不认为Lua可以使用完全相同的实现。从查看C#实现中可以很好地记录下来,因此将实现移植到Lua或C上并不是太难。
好消息是.NET实现中使用的加密原语是可用的,因此您不需要重写这些部分。特别是,您需要:
hashedPassword
预计将在base64中。还要注意这个重要的评论:
/* =======================
* HASHED PASSWORD FORMATS
* =======================
*
* Version 0:
* PBKDF2 with HMAC-SHA1, 128-bit salt, 256-bit subkey, 1000 iterations.
* (See also: SDL crypto guidelines v5.1, Part III)
* Format: { 0x00, salt, subkey }
*/
现在有几个PBKDF2 lua实现:
对于基本编码实用程序,请查看https://github.com/aiq/basexx以获得纯粹的lua实现。
您链接的框架确实在加密单元测试here中提供了一些基本的测试向量。您可以使用它来测试您自己的实现,以确保它具有相同的行为。
我在纯粹的lua中编写了自己的PBKDF2实现,作为wifi WPA破解的练习。如果您对此感兴趣,我可以分享。
答案 1 :(得分:0)
拿任何图书馆/代码/等等,比如https://www.gnu.org/software/libc/manual/html_node/crypt.html(谷歌上的第一个结果' c md5库')然后简单地哈希输入密码(重要的是:相同的哈希算法)密码是加密的。可能是md5,正如我上面猜到的 - 如果它不是md_5 - 那么,你有源代码,弄清楚它是什么)并比较字节数组 - 如果它们完全匹配,密码是正确的还是至少是碰撞 - 如果密码不完全匹配,则密码错误。