是否可以使用Javascript计算文件的SHA1 ID?

时间:2009-03-23 21:57:53

标签: javascript sha1

如果在发布表单之前可以这样做,可能会让我不得不将文件上传到我的服务器......

7 个答案:

答案 0 :(得分:2)

实际上你可以现在读取客户端文件的内容,只要它在文件上传字段中选择并且你正在使用Firefox。请参阅input.files数组。然后你可以确实哈希它,虽然它可能很慢。

有关示例和紧凑型SHA-1实现,请参阅How would I get a Hash value of a users file with Javascript or Flash?

答案 1 :(得分:1)

为此,您必须将文件的二进制信息加载到JavaScript中。这是不可能的。

here's是JavaScript中SHA1的实现。

答案 2 :(得分:1)

可以使用SHA1,但性能不是最好的......

对于超过几百KB的任何内容,您必须运行一些基准并确定它是否确实是一个可行的解决方案。

请参阅this link以获得良好的实现(passpack和相当多的OS项目使用它)

编辑: 正如其他人已经回复的那样,实际上获取文件内容可能是一个完全不同的问题 - 所以除非你使用Google Gears或Adobe AIR这样的东西,否则它几乎是不可能的。

答案 3 :(得分:1)

可以使用HTML5文件界面阅读其本地文件:https://developer.mozilla.org/en-US/docs/Web/API/File

然后您可以使用类似Crypto.js https://code.google.com/p/crypto-js/的库来完成读取文本的哈希。

答案 4 :(得分:0)

不,您无法使用JavaScript从本地计算机访问文件。

您必须先将其上传到服务器,然后检查文件的校验和。

答案 5 :(得分:0)

不是本地的,不是,无论如何这都是个坏主意。文件中的每个字节都必须通过Javascript加载到内存中,你需要一种方法来实现它。

如果您必须这样做,并且您已经有办法将文件的二进制信息放入脚本中,那么您可以使用there's plenty个第三方脚本。例如Here's one

答案 6 :(得分:0)

您可以使用Java小程序执行此操作。我从来没有使用过它们,但是有很多Java上传小程序。哈希算法本身可用于Java,可以通过java.security.MessageDigest访问。如果客户端没有可用的Java插件,您可能会故障回到服务器上的常规上传和散列。

附注:根据您对文件进行哈希处理的原因,您可能希望在上传后在服务器上重新哈希,而不是信任客户端。