不仅仅是iOS开发需要知道的Base64在什么时候使用

1.Base64算不上加密,它只是把数据进行编码和解码

2.实际使用的时候一般需要把默认的换行符都去掉

3.使用场景:

<1>:传输密文,RSA,DES,SM2,SM4等加密算法都是对2/16进制数据操作(16进制是我们直观看到的).

比如 这个 7b202020 20202020 20202020 20205c22 49645c22 3a205c22 59735f53 68655a68 695f444c 4d4d5847 5c222c20 20202020 20202020 20202020 5c224973 4c6f6769

在iOS中这是NSData类型,这个密文是无法转成String的(除非HexToStr,看起来还是那些,数据量大,解析步骤更多)。

如何将上面的16进制数据传给服务器,通过Base64编码 将其转成NSString,类似:JXU4RkQ5JXU5MUNDJXU2NjJGJXU4OTgxJXU1MkEwJXU1QkM2JXU3Njg0JXU1MTg1JXU1QkI5JXVGRjAx

这时候使用Base64编码将密文的data转成str给服务器,服务器将str进行Base64解码成bytes然后给解密算法。

<2>:传输有特殊字符的字符串

服务器给客户端返回的都是 String类型并且一般是组成json格式。客户端拿到json格式的string字符串转成客户端里的字典(NSDictionary安卓叫Map,NSArray安卓叫List)。如果有特殊字符json解析会失败。所以将有特殊字符的键对应的值进行Base64编码,客户端收到后使用Base64解码进行展示。

扫描二维码关注公众号,回复: 9477654 查看本文章

例如:

{

"Type": "H",

 "Id": "xinyongkaji\\nhuo"

}   

\\n属于特殊字符   需要将这一个字段Base64编码

{

"Type": "H",

 "Id": "eGlueW9uZ2thamklNUMlNUNuaHVv"

}   

需要向上面这样传输

客户端收到后在单独对"Id"的值Base64解码成xinyongkaji\\nhuo

<3>图片,声音,视频,文档Word,PPT,  Cer证书

图片等是二进制存储的,有单独的Base64编码/解码方法,原理同第一条

剩下的想起来再补充

发布了120 篇原创文章 · 获赞 15 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/qq_15509071/article/details/88721473