base64 加密有空格 换行_Base64编码密钥时关于换行的几个问题。

在windows下一个javaweb应用,需要用http传递公钥pk。

一般是

String pk = BASE64ENCODER.encode(pkBytes);

base64编码时,每76个字母就要换行。

那么pk就应该是

PHBrZD5NSUlCcGpDQ0FSc0dDU3FHU0liM0RRRURBVENDQVF3Q2dZRUEvWDlUZ1IxMUVpbFMzMHFj

THV6azUvWVJ0MUk4NzBRQXd4NC9nTFpSDQpKbWxGWFVBaVVmdFpQWTFZK3IvRjlib3c5c3ViVld6

4dnFoUmtJbW9

这样的吧

如果我直接在jsp文件输出这个或者写到xml中,没啥问题。

后来我改成用Spring的MarshallingHttpMessageConverter,注入org.springframework.oxm.castor.CastorMarshaller

然后就变成了

PHBrZD5NSUlCcGpDQ0FSc0dDU3FHU0liM0RRRURBVENDQVF3Q2dZRUEvWDlUZ1IxMUVpbFMzMHFj

THV6azUvWVJ0MUk4NzBRQXd4NC9nTFpSDQpKbWxGWFVBaVVmdFpQWTFZK3IvRjlib3c5c3ViVld6

4dnFoUmtJbW9

注意最后是

在unmarshall的时候就把换行给换成了空格。

PHBrZD5NSUlCcGpDQ0FSc0dDU3FHU0liM0RRRURBVENDQVF3Q2dZRUEvWDlUZ1IxMUVpbFMzMHF THV6azUvWVJ0MUk4NzBRQXd4NC9nTFpSDQpKbWxGWFVBaVVmdFpQWTFZK3IvRjlib3c5c3ViVld6 4dnFoUmtJbW9

那么pk就变了。

以上算是个背景。

问题:

1.base64编码(sun.misc.BASE64Encoder)编出来的换行都是\r\n么? 还是说因为我是winodws系统所以是\r\n?

2.

public static void main(String[] args) {

String a="abcd\nefgh\rjkl\r\nmndf";

System.out.println(a);

}

悲催的表示\n,\r,\r\n都可以换一行,这肿么办。 \n\r是换两行。

一般对于换行的情况都是怎么解决的?

这个应该是你文本编辑器的原因,不同的文本编辑器,所用的换行符号有差别的

\n 换行

\r 回车

应该是windows系统会变成\r\n。

http://www.blogjava.net/javacap/archi…,会不加\r\n,另外效率提高一倍。

如果不想重写,只有将得到字符串去掉\r\n了。

根据RFC822规定,BASE64Encoder编码每76个字符,还需要加上一个回车换行。

base64 编码本来就不需要换行的,用 commons-codec 1.5 的 Base64.encodeBase64String(byte[]) 吧

String pk = BASE64ENCODER.encode(pkBytes);

pk.replaceAll("\r\n","");

这样试试

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值