为了账号安全,请及时绑定邮箱和手机立即绑定

Base64 不对整个字符串进行编码

Base64 不对整个字符串进行编码

慕森王 2022-06-23 17:21:08
当我对tex进行编码时,由于某种原因它会切断部分字符串......可能是什么问题?        DateFormat dateFormat =                new SimpleDateFormat("MM/dd/yyyy HH:mm:ss a", Locale.ENGLISH);        Date date = new Date();        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.add(Calendar.HOUR,+ 9);        String server_time = dateFormat.format(calendar.getTime());        String wmsAuthSign = "server_time=" + server_time + "&hash_value=U2QK9TLB55JWTZr3OKZHtg==&validminutes=120";        wmsAuthSign = "?wmsAuthSign=" + Base64.encodeToString(wmsAuthSign.getBytes(), Base64.DEFAULT);我正在提交这样的内容:server_time=02/18/2019 23:38:43 PM&hash_value=U2QK9TLB55JWTZr3OKZHtg==&validminutes=120如果你解码编码的文本,你会得到一个修剪的结果:server_time=02/18/2019 23:38:43 PM&hash_value=U2QK9TLB55J
查看完整描述

1 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

由于RFC-2045

(5)   (Soft Line Breaks) The Quoted-Printable encoding
      REQUIRES that encoded lines be no more than 76
      characters long.  If longer lines are to be encoded
      with the Quoted-Printable encoding, "soft" line breaks

源数据字符串:

server_time=02/18/2019 23:38:43 PM&hash_value=U2QK9TLB55JWTZr3OKZHtg==&validminutes=120

Base64 编码为字符串:

c2VydmVyX3RpbWU9MDIvMTgvMjAxOSAyMzoxMjo1NiBQTSZoYXNoX3ZhbHVlPVUyUUs5VExCNTVKV1RacjNPS1pIdGc9PSZ2YWxpZG1pbnV0ZXM9MTIw

与上面显示的完全一样:带换行符。但是在接收端你可能只解码第一行

c2VydmVyX3RpbWU9MDIvMTgvMjAxOSAyMzoxMjo1NiBQTSZoYXNoX3ZhbHVlPVUyUUs5VExCNTVK

那是server_time=02/18/2019 23:12:21 PM&hash_value=U2QK9TLB55J

因此,在接收器端解码整个接收到的数据,而不仅仅是第一行。

或者您可能仅将编码 Base64 的第一行发送到接收方。

另请查看Mohammad Adil的这个答案:

在 android 上,使用Base64.NO_WRAP而不是Base64.DEFAULT


查看完整回答
反对 回复 2022-06-23
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信