首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript Base 64解码二进制数据不起作用

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

Stack Overflow用户
提问于 2012-02-24 00:31:55
回答 2查看 1.3K关注 0票数 2

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

然后我有一个简单的超文本标记语言页面,它使用jQuery来获取这个文件,base64解码它,并做一个校验和测试。校验和测试不起作用。

我在编码后用PHP对文件进行了md5'd处理,在解码前用javascript对它进行了md5'd处理,校验和匹配(所以在传输过程中没有出现任何问题)。但是,编码前校验和解码后校验和不匹配。

我在JavaScript中使用webtoolkit.base64.js解码它。该文件为二进制文件( ZIP存档)。

有没有解码库的问题或其他我不知道的问题,可能会导致这个问题?我正在使用的MD5库(http://pajhome.org.uk/crypt/md5/md5.html)会有问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-28 07:22:35

摘要

你的MD5库没问题,你的base64库坏了。

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

  1. 我已经创建并验证了一个15097字节的ZIP文件。

sum:a9de6b8e5a9173140cb46d4b3b31b67c

  • I对该文件进行base64编码:http://pastebin.com/2rfdTzYT (20132 bytes).

  • Verify MD5 http://pastebin.com/2rfdTzYTbase64文件的长度,使用以下JavaScript代码片段:

使用atob正确document.querySelector('.de1').textContent.replace(/\s/g,'').length;

  • Base64-decode文件,并验证大小:

window.b64_str = document.querySelector('.de1').textContent.replace(/\s/g,'');console.log( atob(window.b64_str).length );/* 15097 */

  • I使用Hexdump JavaScript libraryxxd UNIX命令(以UNIX的形式提供)验证这两个文件是否完全相同

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

您的MD5库是正常的。

票数 2
EN

Stack Overflow用户

发布于 2012-02-28 07:36:27

我可能误解了这个问题,但如果我没有误解,我以前就遇到过这样的情况。您正在使用的javascript库不支持二进制。php编码的将是一堆1和0,但javascript输出的将是文本。如果你想要一个二进制字符串,你必须将生成的文本转换成二进制,然后它应该和你的原始文件一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9417105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档