【问题标题】:How to get correct SHA1 hash of BLOB using CryptoJS?如何使用 CryptoJS 获得 BLOB 的正确 SHA1 哈希?
【发布时间】:2013-07-23 19:55:16
【问题描述】:

CryptoJS v3.1.2,sha1.js 汇总

在 JS 中,我想在将 blob 发送到服务器之前计算其 SHA1。在服务器上,我想计算结果文件的 SHA1 并将其与从 JS 接收到的 SHA1 进行比较。问题是 CryptoJS.SHA1() 生成的哈希不正确(总是 9844f81e1408f6ecb932137d33bed7cfdcf518a3)

JS代码:

function uploadFileslice (slice) { // slice is a blob
    var fileReader = new FileReader()
    fileReader.onload = function(event){
        var arrayBuffer = event.target.result
        var wordArray = CryptoJS.lib.WordArray.create(arrayBuffer)
        var sha1crc = CryptoJS.SHA1(wordArray).toString(CryptoJS.enc.Hex)
        //etc
        requestParams.append('fileslice', slice)
        requestParams.append('sha1crc', sha1crc)
        //etc
    }
    fileReader.readAsArrayBuffer(slice)
}

PHP 代码:

$file_crc = sha1_file($_FILES['fileslice']['tmp_name']);
if ($_REQUEST['sha1crc'] !== $file_crc) {
    echo "Invalid CRC: {$_REQUEST['sha1crc']} (expected $file_crc)";
    return;
}

输出:

无效的 CRC:9844f81e1408f6ecb932137d33bed7cfdcf518a3(预期为 3ebe2cd2d8fd8d8f977b6d715f0b1adf5b08b407

我希望有类似 myHash = CryptoJS.SHA1(blob)

【问题讨论】:

    标签: blob sha1 cryptojs


    【解决方案1】:

    根据您提供的信息,我不确定您是如何设置的,但为了支持 ArrayBuffers,您必须包含 components/lib-typedarrays-min.js。

    https://code.google.com/p/crypto-js/issues/detail?id=67 对此进行了讨论。

    希望这会有所帮助!

    【讨论】:

    • 就在按钮上。谢谢。
    • 没问题很高兴为您提供帮助!
    • 我正在寻找使用 sha256 但我遇到了困难。在我的例子中,我有一个代表图像的 b64 字符串。我使用您通过转换为 arraybuffer 链接的代码,然后使用 wordarray 来计算哈希。不幸的是,当我在我的 Mac 上使用 openssl sha256 检查图像的哈希时,结果不同。知道我做错了什么吗?
    • (与我之前的这个问题有关..stackoverflow.com/questions/25148246/…
    • 任何使用 CryptoJS 从 Blob 创建哈希的人都应该意识到这一点。不要忘记包含“lib-typedarrays.js”。效果很好!
    【解决方案2】:

    如果您使用模块和import,您可以:

    import Hex from 'crypto-js/enc-hex'
    import WordArray from 'crypto-js/lib-typedarrays'
    import sha1 from 'crypto-js/sha1'
    
    const hash = sha1(WordArray.create(arrayBuffer)).toString(Hex)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 2011-03-11
      相关资源
      最近更新 更多