JavaScript Base 64解码二进制数据不需要';行不通
我有一个简单的PHP文件,它从我的服务器加载一个文件,base64对其进行编码并将其返回 然后我有一个简单的HTML页面,它使用jQuery获取这个文件,base64解码它并进行校验和测试。校验和测试不起作用 我在编码文件后用PHP对其进行md5处理,在解码之前用javascript对其进行md5处理,校验和匹配(因此在传输过程中没有出现任何错误)。但是,预编码和解码后校验和不匹配 我正在使用JavaScript对其进行解码。该文件是一个二进制文件(ZIP存档) 解码库是否存在问题或其他我不知道的可能导致此问题的问题?我正在使用的MD5库可能有问题吗 摘要JavaScript Base 64解码二进制数据不需要';行不通,javascript,binary,base64,Javascript,Binary,Base64,我有一个简单的PHP文件,它从我的服务器加载一个文件,base64对其进行编码并将其返回 然后我有一个简单的HTML页面,它使用jQuery获取这个文件,base64解码它并进行校验和测试。校验和测试不起作用 我在编码文件后用PHP对其进行md5处理,在解码之前用javascript对其进行md5处理,校验和匹配(因此在传输过程中没有出现任何错误)。但是,预编码和解码后校验和不匹配 我正在使用JavaScript对其进行解码。该文件是一个二进制文件(ZIP存档) 解码库是否存在问题或其他我不知道
MD5库正常,base64库已损坏 JavaScript Base64库和MD5库都无法正常工作
MD5总和:
a9de6b8e5a9173140cb46d4b3b31b67c
document.querySelector('.de1').textContent.replace(/\s/g').length代码>
window.b64_str = document.querySelector('.de1').textContent.replace(/\s/g,'');
console.log( atob(window.b64_str).length ); /* 15097 */
xxd
UNIX命令(可从中获得)验证了这两个文件完全相等atob
方法在某些字节序列(包括回车)之后返回了不正确的字节。我还没有找到解决办法
您的MD5库没有问题。我可能误解了这个问题,但如果我没有误解,我以前也遇到过类似的情况。您正在使用的javascript库不执行二进制操作。php编码的将是一组1和0,但javascript输出的将是文本。如果您想要一个二进制字符串,您必须将结果文本转换为二进制,然后它应该与原始文件相同 如果您尝试发送一个简单的文本文件,那么调试会更容易,并且不排除base64编码可能有故障。我已经用文本文件进行了这些测试,它工作正常(包括校验和部分)。我假设我使用的两个库中有一个不能很好地处理二进制数据。我在过去一天创建了一个自己的hextump库,并验证了
atob
实际上工作正常。您的库的md5sum算法似乎与UNIX/PHP中的不同。当我有更多的时间,我可能会更深入地挖掘它。