Base64编码密钥时关于换行的几个问题。
在windows下一个javaweb应用,需要用http传递公钥pk。
一般是
String pk = BASE64ENCODER.encode(pkBytes);
base64编码时,每76个字母就要换行。
那么pk就应该是
PHBrZD5NSUlCcGpDQ0FSc0dDU3FHU0liM0RRRURBVENDQVF3Q2dZRUEvWDlUZ1IxMUVpbFMzMHFj THV6azUvWVJ0MUk4NzBRQXd4NC9nTFpSDQpKbWxGWFVBaVVmdFpQWTFZK3IvRjlib3c5c3ViVld6 4dnFoUmtJbW9
这样的吧
如果我直接在jsp文件输出这个<%=pk%>或者写到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是换两行。
一般对于换行的情况都是怎么解决的?
闪光迎击神话
11 years, 5 months ago