为 base64 输入数据(base64 中的文件数据)生成 SHA1 哈希 ID

generate SHA1 hash ID for base64 input data (file data in base64)

我正在尝试为输入生成 SHA1 哈希 ID,输入只是 base64 格式的文件内容。

要明确输入将是 base64 数据,输出将是 SHA1 哈希 ID

我一直在使用 CryptoJS 库,如下面的代码所示。但不幸的是,生成的哈希 ID 与所需的实际哈希不同。

<!doctype html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title></title>
        <link rel="stylesheet" media="all" href=""/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
    </head>
    <body lang="en">
        <form id="test">
            <p>
                <label>Text</label><br>
                <textarea id="text" style="width: 500px; height: 200px">This is the secret message</textarea>
            </p>
            <input type="submit" id="submit">
        </form>
        <div id="output"></div>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
        <script src="crypto-js.min.js"></script>
        <script src="sha1.js"></script>
        <script>
            $(function() {
                $('#test').on('submit', function() {
                    var b64data= $('#text').val();
                    var hash = CryptoJS.SHA1(b64data);
                    var result = CryptoJS.enc.Hex.stringify(hash);
                    console.log(result);

                    return false;
                });

            });
        </script>
    </body>
</html>

我的代码输出:

6bc205c87e54d2d114a880f25d227b75639a9d74

预期输出:

fca9cdfd98590aa4c417b412c8331dfb2faf2253

输入 base64 示例:由于长度超过 Stack Overflow 正文限制而无法附加。

我已经修复了将 base64 转换为单词数组的代码,如下所示

var words = CryptoJS.enc.Base64.parse(b64data);
var hash = CryptoJS.SHA1(words);
var result = CryptoJS.enc.Hex.stringify(hash);

它对我有用。希望对其他人也有帮助