纯Lua哈希方法

这已经困扰我一段时间了,我似乎找不到一个纯 Lua 实现的流行哈希方法,比如 SHA256SHA512 或 Whirlpool。我需要它,因为我将在客户端哈希密码,然后将其发送到服务器。速度不是问题,我不在乎哈希 10,000 次需要 10 秒左右,我将在一个线程上运行它。

我以前试过一些,一开始看起来完美无缺,但当我尝试不同的输入字符串(通常是更长的字符串)时,哈希值变成了完全不正确的哈希输出。

我正在使用 Love2D 的 LuaJIT 版本,所以它已经实现了 BitOp 库。如果你们中有人知道这些哈希方法或任何类似的安全方法的好实现,请告诉我!

谢谢!

更新:下面是一些结果!

首先这是我正在使用的测试代码。

https://github.com/JustAPerson/LuaCrypt

输入:测试字符串
输出:a3e49d843df13c2e2a7786f6ecd7e0d184f45d718d1ac1a8a63e570466e489dd
期望的:a3e49d843df13c2e2a7786f6ecd7e0d184f45d718d1ac1a8a63e570466e489dd

输入:这是一个要哈希的测试字符串
输出:05b4ac920d4130cb9d9bb046cac7476f35d7404cf116dc8d6d4a113c3c79d904
期望的:f70b476ff948472f8e4e52793a5a2779e636c20dd5336d3a8a4455374318db35

https://bitbucket.org/Boolsheet/sil/raw/tip/hash.lua

输入:测试字符串
输出:8f1a5b37fbe986953c343d5b839b14843c6c29d47a6a7e52f263cd82ad6141a3
期望的:a3e49d843df13c2e2a7786f6ecd7e0d184f45d718d1ac1a8a63e570466e489dd

输入:这是一个要哈希的测试字符串
输出:167bf7b9000442419b3016a6e1edfcc7c8d40b5f0b80518a31ddb0bbd388e87ac
期望的:f70b476ff948472f8e4e52793a5a2779e636c20dd5336d3a8a4455374318db35
点赞
用户68204
用户68204

Lua用户维基上有SHA256的实现。该页面指出它是Lua 5.2版本。我想,在LuaJIT中将其运作起来不会太困难。

请注意围绕密码和身份验证的更大安全问题。通常的建议是使用现有的经过测试和支持的实现,而不是自己编写安全性。这不是轻描淡写地做的事情。

由于您正在使用LuaJIT,您应该能够利用其非常强大的FFI功能来使用本地平台提供的加密。这可能需要编写一些面向平台的FFI风格的Lua代码,以适用于您的客户端预计运行的每个平台。但从我在LuaJIT邮件列表中的观察来看,这不应该太痛苦了。

2013-11-14 19:50:56