base64加密出现的问题
发表于|更新于
|浏览量:
背景
项目中仿QQ闪照功能, 图片的发送逻辑是, 先转base64, 然后加密, 最后加密后的字符串作为文件发送; 在处理接收的时候, 按照先下载文件, 然后读取文件内容, 再解密, 然后按照 base64 字符串的方式生成图片, 却一直失败.
解决方法
起初以为是, 加解密的问题, 仔细排查后, 排除了这个假设. 最后把解密后的字符串拷贝到VSCode中仔细观察发现, 其中多了很多\r\n.
搜索后发现, 是base64加密的问题, 由于base64一行不能超过76字符, 超过就会添加回车换行符(在 Windows中是\r\n, 在Linux中是\n). 而解析后其中的回车和换行就是错误信息, 所以解决方法是, 把\r\n替换为空字符串, 然后再去生成图片, 就正常了.
参考
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2024-04-11
Mac M2芯片安装Picgo 打不开
Mac M2芯片安装PicGo 打不开背景Mac M2 芯片,PicGo安装后打开提示PicGo 已损坏,无法打开。 解决起初以为是打开的方式不对,因为有些新APP,从 LaunchPad 中打开会报错,从 Application/中打开一次就可以了;但是这个从Applicaiton中打开也报这个错; 然后以为是下载的版本不对,是不是下载的不是 arm64 芯片的,于是又专门去下载了一次。结果再次打开还是报这个错。 搜索了一下发现,解决方法如下: 在终端输入: 12345# sudo xattr -r -d com.apple.quarantine 你的APP路径sudo xattr -r -d com.apple.quarantine /Applications/PicGo.app Ps: 然后再备注一个 PicGo 设置 Github图床一直失败,可以看下分支是不是 main,PicGo默认是 master,所以分支也要改对。
2022-09-28
iOS CreateML的使用
CreateML使用背景业务需求,想要通过拍照识别照片中指定物体的数量或者物体的种类。而这种物体的模型网上没有训练好的,需要从头开始。所以调研了苹果的createML的实现方案,具体操作如下: 需求是:通过拍照识别照片中指定物体的数量,实现方案大致有几种: 通过第三方平台,训练数据,生成模型,提供前端使用 自己搭建平台,训练数据,生成模型,提供前端使用 通过苹果的CreateML工具,训练数据,生成模型,供iOS使用或转换成其他模型使用 对比可以发现,通过苹果的CreateML工具,可以省去搭建平台的过程。下面来看看怎么使用CreateML。 使用CreateML的整体流程是: 有大量的样本 标注所有的样本 用这些样本训练生成模型 验证模型的识别率 测试模型效果 导出模型供使用 需求是通过拍照识别照片中指定物体的数量,所以对我来说样本就是照片,下面就来看下怎么生成CreateML训练需求的标注信息。 使用样本照片标注首先要有大量的样本照片,这里由于是调研测试,所以选取20张照片,照片来源是百度图片。。。麻烦的是照片标注,由于苹果CreateML训练需要指定格式的J...
2021-07-26
Flutter布局基础——Stack层叠布局
Flutter布局基础——Stack层叠布局层叠布局适用于子视图叠放一起,且位置能够相对于父视图边界确认的情况。 比如,可用于图片上加文字,按钮上加渐变阴影等等。 Stack Widget的子视图要么是positioned,要么是non-positioned。Positioned子视图是指使用Positioned的widget包括起来的子视图,通过设置相对于Stack的top、bottom、left、right属性来确认自身位置,其中至少要有一个不为空。 Stack Widget的大小取决于所有non-positioned的子视图。non-positioned的子视图的位置根据alignment属性确定,(当alignment为left-to-right时,子视图默认从左上角开始;当aligment为right-to-left时,子视图从右上角开始;)。 Stack 基础使用Stack常用属性 Stack常用属性 children:子视图 alignment:子视图的对齐方式 topLeft:顶部左对齐 topCenter:顶部居中对齐 topRight:顶部右对齐 cent...
2016-05-10
开发中遇到的问题(二)
开发中遇到的问题,分享给大家,有则改之,无则加勉。1. UIScrollView加了category之后导致的手写输入时崩溃的问题—— [UIKBBlurredKeyView candidateList]上周更新的应用,这周上线了,然后昨天旁边的同事告诉我说,友盟上的崩溃信息,崩溃率1%点多了,赶紧查查吧。看了一下发现大部分的崩溃都是这个日志:[UIKBBlurredKeyView candidateList]: unrecognized selector sent to instance…,于是搜了一下 崩溃重现:切换到有输入的地方,点击输入,切换输入法到手写输入法(系统的,第三方的没事),然后输入,输入一个之后,第二个字就会崩溃。 原因:是因为给UIScrollView加了个category,是用于处理点击屏幕的事件的(触摸屏幕回收键盘),之前一直都是这么做的,也没问题,又或者又问题也没人反馈,😓,估计是投诉无门啊。。。。。而且我们测试的时候也没有测试手写输入法,因为没人会想到这还会有什么不同。苹果自己也没想到,所以我们就上线了,然后就有崩溃了。。。这坑爹的 解决:既然...
2022-04-18
Algorithem_TwoPointersOfLinked List
Algorithem_TwoPointersOfLinked List876. Middle of the Linked ListGiven the head of a singly linked list, return the middle node of the linked list. If there are two middle nodes, return the second middle node. Example 1: 123Input: head = [1,2,3,4,5]Output: [3,4,5]Explanation: The middle node of the list is node 3. Example 2: 123Input: head = [1,2,3,4,5,6]Output: [4,5,6]Explanation: Since the list has two middle nodes with values 3 and 4, we return the second one. 解法单看例子,感觉是获取数组中间位置到末尾,这个...
2016-01-04
轮播图实现的三种方式
轮播图实现的三种方式假设有5张图片,分别是:12345,实现轮播图 方法1:用scrollView加NSTimer实现,思路:12345五张图片,实现轮播,我添加两张,变成5123451,当滑到最后一个1时,无动画位移回第一个1;当倒着滑到5时,无动画回最后的5。 难点在于:给定数组的个数,及两个边界的判断 方法2:用collectionView加NSTimer实现,思路:12345五张图片,对应collectionView的1个section,即一个section有5个row;至于有多少个section,尽量设置的大一些,eg:100;(collectionView有重用机制)所以不用担心内存问题。 难点在于:滑动的逻辑处理;如果你把section设置的非常大,就不用担心倒着滑的问题,毕竟不是每个人都那么闲。 1234567891011121314151617181920- (void)nextPage:(id)sender { // 1. 得到当前正在显示的cell的indexPath,(只有一个) NSIndexPath *currentI...