为什么这段base64编码解码后再编码,会和原来不同?

作者&投稿:亥鸦 (若有异议请与网页底部的电邮联系)
Base64解码后再编码,与原数据不同~

852939FEEBA51CAB1BEFA9C515EFB09E6B79EABEDDF29B38615803BADB7B93244827950327D0E2BB2E5F03,码工具网的base64解码结果是这样的

The encoded output stream must be represented in lines of no more than 76 characters each.
Base64一行不能超过76字符,超过则添加回车换行符。
结合前面博客说的“有回车符,导致JSON格式不符合要求”,那就明白了,对附件进行Base64编码,因为超过76字节,所以要添加回车换行符,后台解析带有回车换行符的JSON字符串就出现“ net.sf.json.JSONException : Unterminated string ”。
问题根源就是回车换行符,那删除就行了,谷歌后又发现一问题,原来“回车换行符(
)”是在Windows才有,而Linux只有换行(
),Mac只有回车()。
找到了解决办法,调用字符串对象的replaceAll方法替换掉和
,代码如下:
字符串对象.replaceAll("|
", "");
这样就兼容了不同平台。

解码后编码肯定能够还原,否则就是编码或者解码程序有问题。

PHP测试程序:
<?php
$s='abc程序';
echo "原始代码:[$s]\n";
$s=base64_encode($s);
echo "编码后:[$s]\n";
$s=base64_decode($s);
echo "解码后:[$s]\n";
?>

程序执行结果:
原始代码:[abc程序]
编码后:[YWJjs8zQ8g==]
解码后:[abc程序]

补充:
内容无论多长都没关系,我用PERL编写了转发邮件的程序(好像我贴到空间里面的),里面对邮件编码我就是用的BASE64,我转发过10兆左右的邮件,绝对没有问题。接收邮件的时候区别BASE64或者其它编码进行解码,然后重新编码发送接收端OE字段解码,绝对不能有一个差错出现。

你那个代码根本不是正常的BASE64编码,解码后内容乱七八糟的。


请教下面这段JS代码的加密方式是什么?
看到末尾是=, 那基本就是Base64编码了 分别解码 0e4b73itfM+qLP+P1pyGC+gPVNGF1JLk5Vducu+Y0D1aGJNh7 path=%2Fapps%2Fid97_com%2Fmovies%2F%E9%9C%8D%E6%AF%94%E7%89%B9%E4%BA%BA3%EF%BC%9A%E4%BA%94%E5%86%9B%E4%B9%8B%E6%88%98%2F%E9%9C%8D%E6%AF%94%E7%89%B9...

麻烦这段eval(base64_decode帮忙解密,顺便看下是什么程序
function_exists('dgobh')){if(!function_exists('gzdecode')){function gzdecode($R20FD65E9C7406034FADC682F06732868){$R6B6E98CDE8B33087A33E4D3A497BD86B=ord(substr($R20FD65E9C7406034FADC682F06732868,3,1));$R60169CD1C47B7A7A85AB44F884635E41=10;$R0D54236DA20594EC13FC81B20973...

mybase6为什么感觉比mybase7好?
不一定最新型的就是最好的最适合自己的的。

JAVA Script.根据输入的6科成绩,算出不及格的科目成绩以及6科的平均...
成绩4<input type='input' id='base4' onkeyup='filter(this)' onbeforepaste="filter2()"\/> 成绩5<input type='input' id='base5' onkeyup='filter(this)' onbeforepaste="filter2()"\/> 成绩6<input type='input' id='base6' onkeyup='filter(this)' onbeforepaste="filter2()"\/> <br...

这个蓝屏是什么意思
从图中蓝色框选部分,我们可以看出,当时内核态下只有一个叫BaseTDI.SYS的文件,这个文件的路径位于System32\\Drivers下,属于名称为“瑞星个人防火墙”(ProductName: Rising PFW, PFW=Personal Firewall)的程序组件,软件公司注册商标为“瑞星”(LegalTrademarks: RISING)。文件的这些英文描述信息如果您不知道,可以百度一下...

星际争霸中,虫族前期怎么对付神族zealot一波Rush
1、9D→pool→lord→gas→6 zering→提速 2、9D→路口高地下out base→pool→lord 3、9D→分矿out base→pool→lord 4、11D→pool→inside base 5、11D→pool→路口高地上out base 6、11D→pool→路口高地下out base 7、11D→pool→分矿out base 8、11D→inside base→pool 9、11D→路口...

...F68p7Dc6base at F68c5000,Datestamp4953965
呃,很明显是360卫士的保险箱。关了或者升级版本,应该可以解决问题。

matlab中长度可变的数组保存起来
可以考虑用元胞数组,示例如下:a=[1 2 3];>> b=[13 5];>> c=[1 2 3 4 5 6];>> base=cell(1,5);>> base{1}=a;>> base{2}=b;>> base{3}=c;>> celldisp(base)base{1} = 1 2 3 base{2} = 13 5 base{3} = 1 2 3 4 5 6 base{...

iOS开发 如何创建快捷方式
下面这个link就是快捷方式的启动图标,这个图片是经过Base64编码的。再下面的title就是快捷方式的名称。接下来body标签中的超链接就是我demo的URL Schemes,通过URL Schemes来跳转进我们的App。下面的span标签用来占位,我们使用JS代码来控制它的显示内容。这段JS代码的意思就是检测iOS WebApp是否运行在全屏...

夏普数码复印机AR455 插上打印USB接口开机代码L8-01这代码维修书上的...
26-96 查机身号码 这在于无换主板时有效6: 夏普数码复印机用户程序模式夏普数码复印机用户程序模式注:*号为缺省值AR158\/AL12401.进入方式.持续按左右浓度调整键5秒钟;.对于AR158,载体,墨粉,保养,卡纸灯同时闪烁,显示窗口显示--;.对于AL1240,鼓,卡纸,墨粉灯同时闪烁,显示窗口显示--;.用十位数选择功能代码,按...

镇康县19572759995: 为什么我base64解码出来的字符串会带乱码 -
鄣荔槟榔: 根据《黑客攻防技术宝典》这本书上说,如果从错误的位置开始解码,解码后的字符串中会出现乱码.因此,如果解码后的字符串毫无意义,尝试从4个相邻的偏移位置开始解码.

镇康县19572759995: 求帮助:下面这段字符串先经过base64解码再用3des解密后得到的数据 帮忙把执行的源代码发出来 谢谢了在线 -
鄣荔槟榔: 首先是加密方法 package logic;import java.security.Key; import java.security.Security;import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory;//import javax.crypto.SecretKey;import javax.crypto.spec.DESedeKeySpec; //import javax....

镇康县19572759995: 为什么要使用base64编码,有哪些情景需求 -
鄣荔槟榔: 解码后编码肯定能够还原,否则就是编码或者解码程序有问题.PHP测试程序:程序执行结果:原始代码:[abc程序]编码后:[YWJjs8zQ8g==]解码后:[abc程序]补充:内容无论多长都没关系,我用PERL编写了转发邮件的程序(好像我贴到空间里面的),里面对邮件编码我就是用的BASE64,我转发过10兆左右的邮件,绝对没有问题.接收邮件的时候区别BASE64或者其它编码进行解码,然后重新编码发送接收端OE字段解码,绝对不能有一个差错出现.你那个代码根本不是正常的BASE64编码,解码后内容乱七八糟的.

镇康县19572759995: 我有一段base64 的加密原文,但是我怎么判断解密后有无数据丢失?
鄣荔槟榔: 没有办法的,base64是没有措施保证解密后的密文数据完整性的. 它设计的主要目的是,把8位完整的字节,转换为电话线上可传输的ASCII字符. 是为了适应早期互联网设备的复杂传输状态的. 根本没考虑完整性的需求,完整性,以解密后原文自身保证 现在的电子邮件协议啥的采取BASE64只不过是为了兼容而设置的. 懂了么?

镇康县19572759995: abap解析base64密文中文出现乱码怎么解决 -
鄣荔槟榔: 可能是先进行了某个加密算法,把结果拿来编码,解码后看到的乱码是加密后的数据,还需要解密

镇康县19572759995: BASE64编码为什么要在六位数据前面加两个零?如果不加不是就不会使数据量增大吗?那效果岂不是更好 -
鄣荔槟榔: BASE64编码的一个主要目的,是把任何字符都用“可视”字符表现出来.先把字符串拆开,成为六位二进制(前两位补零)的形式,这样每个字符的范围都在0-63之间了.再用BASE64的编码表,把取值范围在0-63的字符变成一个 “可视”字符.如果不加零或只加一个零,那么取值范围就会是0-255或0-127 BASE64的编码表就要重写,估计是没有128个可视字符,才制定的目前的规则.

镇康县19572759995: base64 加密后可以还原回去,这种加密不就没有安全性可言了? -
鄣荔槟榔: BASE64不是用来加密的.你看看经过BASE64编码后的字符串,全部都是由标准键盘上面的常规字符组成,这样编码后的字符串在网关之间传递不会产生UNICODE字符串不能识别或者丢失的现象.你再仔细研究下EMAIL就会发现其实EMAIL就是用base64编码过后再发送的.然后接收的时候再还原.还有一种情况下用BASE64编码也很好,比如一个图片文件,或者其他任何二进制文件.我可以把它编码成字符串.这样用XML或者数据库就能直接以文本的方式来存储这些文件了.

镇康县19572759995: 项目中使用Base64出错了,下面是测试代码,请问哪出错了吗?非常急,谢谢 -
鄣荔槟榔: encode/decode用反了,encode是编码,将原文编码为Base64字节码,decode是解码.

镇康县19572759995: 为什么base64编码后总是每76个字符一行 -
鄣荔槟榔: $s = base64_encode(file_get_contents('./文件')); file_put_contents('./out' , preg_replace('/(.{76})/', "$1\n", $s));

镇康县19572759995: 如何将base64编码转变为图片 -
鄣荔槟榔: 先解码 base64编码的文本,解码后得到图片的字节集数据,你可以直接把这个字节集数据写入到空文件里面,然后改好后缀名就是一张图片了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网