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-04-13
Algorithem_Sort
Algorithem_SortGiven an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order. QuickSort实现逻辑:取指定位置的 index 的值key,比较index和 index之前的数字,如果前面的数字大于后面的数字,则交换位置; 比如: 123456789[ 8 3 5 1 4 2 ]从 index为1开始,当前元素3,前面元素8,8 > 3,故而交换位置,数组还为[ 3 8 5 1 4 2 ]然后 index 为2,当前元素为5,前面元素为8,8>5,故而交换位置,数组为[ 3 5 8 1 4 2 ]然后 index 为3,当前元素为1,前面元素为8,8>1,故而交换位置,数组为[ 3 5 1 8 4 2 ];5>1,故而交换位置,数组为[ 3 1 5 8 4 2 ];3>1,故而交换位置,数组为[ 1 3 5 8 4 2...
2021-07-23
Flutter组件基础——GridView
Flutter组件基础——GridViewGridView是网格布局,类似于iOS中的UICollectionView,可设置每行多少个、单个对象的宽高比、对象水平方向的间距、垂直方向的间距等等。 GridView的常用属性 GridView scrollDirection: 滑动方向 Axis.horizontal: 水平方向滑动 Axis.vertical: 垂直方向滑动,默认为这个。 padding: GridView相对于父视图的边距 crossAxisCount: 每行多少个 mainAxisSpacing: 与滑动方向垂直的方向的间距,eg: 当横向滑动时,这个代表垂直方向对象之间的间距; crossAxisSpacing: 与滑动方向平行的方向的间距,eg: 当横向滑动时,这个代表水平方向对象之间的间距; childAspectRatio:单个元素的宽高比(或者高宽比),当scrollDirection为vertical时,代表宽高比;当scrollDirection为horizontal时,代表高宽比。 简单使用代码如下: 1234567891011...
2021-08-04
iOS 虚拟定位原理与预防
iOS 虚拟定位原理与预防背景说到虚拟定位,常有印象都是安卓上的分身软件甚至系统自带的位置穿越(笔者曾经使用过ZUK Z2系统自带的位置穿越),会认为iOS上虚拟定位比较困难。笔者没调研之前也是这么认为,之前已知的虚拟定位是使用Xcode添加GPX文件,编辑经纬度,从而实现虚拟定位。但是这种操作也只有熟悉iOS开发的人才能操作,而且需要mac电脑,故而笔者印象中也是iOS上虚拟定位比较困难。 然而经过调研之后,笔者发现,iOS的虚拟定位没有那么困难,甚至相比于安卓更简单。下面就来介绍一下iOS中几种虚拟定位的方法。 虚拟定位的几种办法及原理笔者调研后,发现iOS上面虚拟定位大致可有4中情况: 使用Xcode通过GPX文件虚拟定位 使用爱思助手中的虚拟定位功能直接虚拟定位 通过外接设备,比如蓝牙和手机连接,发送虚拟定位数据来虚拟定位 越狱设备中通过hook定位方法,来虚拟定位 下面就来一个个分析实践: 使用Xcode通过GPX文件虚拟定位使用Xcode通过GPX文件虚拟定位,iOS开发一般比较熟悉,操作步骤是: 新创建一个iOS项目,然后添加文件,选择创建GPX文件 编辑...
2022-09-28
iOS CreateML的使用
CreateML使用背景业务需求,想要通过拍照识别照片中指定物体的数量或者物体的种类。而这种物体的模型网上没有训练好的,需要从头开始。所以调研了苹果的createML的实现方案,具体操作如下: 需求是:通过拍照识别照片中指定物体的数量,实现方案大致有几种: 通过第三方平台,训练数据,生成模型,提供前端使用 自己搭建平台,训练数据,生成模型,提供前端使用 通过苹果的CreateML工具,训练数据,生成模型,供iOS使用或转换成其他模型使用 对比可以发现,通过苹果的CreateML工具,可以省去搭建平台的过程。下面来看看怎么使用CreateML。 使用CreateML的整体流程是: 有大量的样本 标注所有的样本 用这些样本训练生成模型 验证模型的识别率 测试模型效果 导出模型供使用 需求是通过拍照识别照片中指定物体的数量,所以对我来说样本就是照片,下面就来看下怎么生成CreateML训练需求的标注信息。 使用样本照片标注首先要有大量的样本照片,这里由于是调研测试,所以选取20张照片,照片来源是百度图片。。。麻烦的是照片标注,由于苹果CreateML训练需要指定格式的J...
2024-03-13
Xcode 15.3 Archive失败
Xcode 15.3 Archive失败背景昨晚升级 Xcode 到 15.3,今天打包的时候发现 Archive 失败,提示:Call parameter type does not match function signature!,仔细看报错里是和HandyJSON相关的提示。 解决起初以为和 Pod 库有关系,但是找同事确认后,发现低于 Xcode 15.3 的版本是可以打包成功的,但是 Xcode 15.3 的版本就报错了。然后搜索HandyJSON Call parameter type does not match function signature!,发现了这个,Building HandyJSON in Swift 5.10 throws a fatal error ,是Swift 5.10 编译 HandyJSON报错了。目前HandyJSON官方还未解决。 暂时的解决方法是: 在 Pod 的 Target 中找到 HandyJSON, 然后设置Optimization Level为 None和No Optimization,如下图: 然后再次尝试 A...