gpt4 book ai didi

JavaScript Base 64 解码二进制数据不起作用

转载 作者:行者123 更新时间:2023-11-29 22:25:51 24 4
gpt4 key购买 nike

我有一个简单的 PHP 文件,它从我的服务器加载一个文件,对其进行 base64 编码并回显出来。

然后我有一个简单的 HTML 页面,它使用 jQuery 获取此文件,对其进行 base64 解码并进行校验和测试。校验和测试不起作用。

我在编码后用 PHP 对文件进行了 md5,在​​解码之前用 javascript 对文件进行了 md5,并且校验和匹配(因此在传输过程中没有出错)。但是,编码前和解码后的校验和不匹配。

我正在使用 webtoolkit.base64.js用于在 JavaScript 中对其进行解码。该文件是二进制文件(ZIP 存档)。

解码库是否有问题或其他我不知道的问题可能会导致此问题?会不会是我使用的 MD5 库有问题 ( http://pajhome.org.uk/crypt/md5/md5.html )

最佳答案

Summary
Your MD5 library is OK, your base64 library is broken.

您的 JavaScript Base64 库和 MD5 库都无法正常工作。

  1. 我已经创建并验证了一个 15097 字节的 ZIP 文件。
    MD5 和:a9de6b8e5a9173140cb46d4b3b31b67c
  2. 我对这个文件进行了 base64 编码:http://pastebin.com/2rfdTzYT (20132 字节)。
  3. 使用以下 JavaScript 片段验证 pastebin 中 base64 文件的长度:
    document.querySelector('.de1').textContent.replace(/\s/g,'').length;
  4. 使用 atob 对文件进行 正确 Base64 解码,并验证大小:

    window.b64_str = document.querySelector('.de1').textContent.replace(/\s/g,'');
    console.log( atob(window.b64_str).length ); /* 15097 */
  5. 我使用 Hexdump JavaScript library 验证了两个文件完全相同, 和 xxd UNIX 命令(可用 EXE file for Windows )。

使用你的 Base64 解码器,我得到一个大小为 8094 的字符串。那不是 15097!在测试期间,我发现 atob 方法在某些字节序列(包括回车符)之后返回不正确的字节。我还没有找到解决这个问题的办法。

您的 MD5 库没有问题。

关于JavaScript Base 64 解码二进制数据不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9417105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com