Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AES 256和Base64加密字符串在iOS 8上工作,但在iOS 7上被截断。

AES 256和Base64加密字符串在iOS 8上工作,但在iOS 7上被截断。
EN

Stack Overflow用户
提问于 2015-06-05 03:50:41
回答 2查看 822关注 0票数 0

我的一个应用程序需要下载一个带有AES 256加密内容的数据库。因此,我在服务器端使用phpAES来用IV对AES CBC中的字符串进行编码。

在iOS方面,我使用FBEncryptor解密字符串。

这是服务器端的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$aes = new AES($key, "CBC", $IV);
$crypt = $aes->encrypt($string);
$b64_crypt = base64_encode($crypt);

在iOS方面,我是这样做的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSString* decrypt = [FBEncryptorAES decryptBase64String:b64_crypt keyString:key iv:iv];

实际上,在iOS 8上,所有事情都能正常工作。问题是在iOS 7上,解码的字符串以随机长度被截断。

有什么想法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-08 08:08:57

不要用phpAES。你用一门巨大的大炮射中了自己的脚。

在他们的网页上:

免费版本只支持欧洲央行模式,对加密/解密信用卡号码非常有用。

这是难以置信的错误和误导。欧洲央行模式不适合用于任何目的,除非作为其他操作模式的基石。您需要一个AEAD模式;或者,如果失败,则需要使用HMAC-SHA2和CSPRNG派生的IV/nonce的CBC或CTR。使用未经认证的加密是一个非常糟糕的主意。

为了与iOS的互操作性,您应该使用使用利伯钠

如果不能使用cannot,最好的选择是OpenSSL和显式密室,以及iOS端的兼容接口。

所有当前支持的PHP版本(5.4+)都公开了允许快速和安全的AES-CBC和AES-CTR加密的openssl_encrypt()openssl_decrypt()。但是,您应该使用考虑使用为您实现这些函数的库。而不是自己编写它们。

票数 2
EN

Stack Overflow用户

发布于 2015-06-05 07:37:54

截断可能是不兼容填充的结果。

phpAES使用与mcrypt类似的非标准空填充,这是不幸的,因为填充的标准是PKCS#7。提供256位(32字节)密钥是很重要的,因为这将为算法设置密钥大小。

FBEncryptor只支持PKCS#7填充。

因此,这两种方法是不兼容的。

一种解决方案是在调用PKCS#7之前将phpAES填充添加到php中的字符串中,这样就不会添加空填充。然后FBEncryptor将与加密数据兼容。

PKCS#7填充总是添加填充。填充是一个按字节排列的序列,其值为添加的填充字节数。填充的长度是block_size -(长度(数据)% block_size )。

对于代码块为16字节的AES (希望php是有效的,已经有一段时间了):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$pad_count = 16 - (strlen($data) % 16);
$data .= str_repeat(chr($pad_count), $pad_count);

请在问题中添加工作示例密钥、iv清除数据和加密数据作为十六进制转储。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30665842

复制
相关文章
怎样在ios上上架app
在上架App之前想要 真机测试的同学 请查看 iOS- 最全的真机测试教程 里面包含怎么让多台电脑同时 上架App和同时真机调试。P12文件的使用详解
iOS程序应用
2023/01/13
5330
在iOS上推流
编译librtmp需要用到openssl,所以先编译openssl,下载脚本OpenSSL。
Helloted
2022/06/07
8650
在iOS上推流
flutter - 方法 '[]'在null上被调用,但在inApp中有效
这意味着检索数据需要很短的时间, 试试这个。数据为空时,它将在短时间内通过进度指示器
徐建国
2021/08/03
9470
Android中的AES加密--上
测试一下,OK,没问题,但是觉得好像哪里不对,我本来是为了安全考虑才加密数据的,结果这样把加密的密钥写在类文件是不是不太合适? 所以,又找了一下看如何安全一点。
g小志
2020/06/19
4.7K0
iOS开发之AES+Base64数据混合加密与解密
allluckly.cn.jpg "APP的数据安全已经牵动着我们开发者的心,简单的MD5/Base64等已经难以满足当下的数据安全标准,本文简单的介绍下AES与Base64的混合加密与解密" AES:高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)
Bison
2018/07/04
1.5K0
防护IOS APP安全的几种方式(详解)
1.URL编码加密 对iOS app中出现的URL进行编码加密,防止URL被静态分析 2.本地数据加密 对NSUserDefaults,sqlite存储文件数据加密,保护iOS app的帐号和关键信息。 3.网络传输数据加密 对iOS app客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取 4.方法体,方法名高级混淆 对iOS app的方法名和方法体进行混淆,保证源码被逆向后无法解析代码 5.程序结构混排加密 对iOS app逻辑结构进行打乱混排,保证源码可读性降到最低
honey缘木鱼
2018/09/27
2K0
在iOS8上出现<Error>: CGAffineTransformInvert: singular matrix.错误
在iOS8上设置self.whiteLight.transform = CGAffineTransformMakeScale(0, 0);会出现<Error>: CGAffineTransformInvert: singular matrix. 在iOS9不会,在swift上也不会,只有在OC的iOS8会出现 查了一下要解决这个问题就是要把CGAffineTransformMakeScale(0.00001f, 0.00001f)即可,因为CGAffineTransformMakeScale设置为0不会
傅_hc
2018/07/04
7430
iOS的各种加密方法使用简介
<pre name="code" class="objc"><span style="font-size:18px;color:#cc0000;background-color: rgb(204, 204, 204);">本文主要记载了本文在以往工作中涉及到得加密方式记载以便以后使用:在以往的工作中我们iOS客户端的加密主要应用于接口参数传递安全、二维码信息加密、签名验证等等,不同的应用应该采用不同的加密方法比如支付宝RSA加密,公私钥匹配的模式,微信支付sha1和md5加密都是对于支付来说很安全的,具体
星宇大前端
2019/01/15
1.1K0
在Android和iOS上设置手机ip详细教程
大家好!今天我们将分享一个关于如何在Android和iOS设备上设置手机ip(Layer 2 Tunneling Protocol)的简易教程。如果你想要通过安全且可靠的方式连接到远程网络,那么跟着本文一起学习吧!无需复杂操作,让我们开始愉快地探索吧!
华科云商小徐
2023/09/07
6000
AES加密——Java与iOS的解决方案
该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael为名投稿高级加密标准的甄选流程。(Rijndael的发音近于"Rhine doll")
Originalee
2018/08/30
2.5K0
优化IOS7在旧款设备上的运行性能
IOS7无疑是史上升级速度最快的IOS系统,但部分稍旧的设备例如iPhone 4和iPhone 4S在升级到IOS7之后却遇到了不少性能问题。下面给大家带来了几点建议,通过修改系统设置在一定程度上提高IOS7的性能。
reizhi
2022/09/26
1K0
优化IOS7在旧款设备上的运行性能
Ios海外上架
1、被拒开发者账号:中国区,新账号新应用居多,包括公司开发者账号,有的被苹果推荐过的App更新也有遇到
iOS Magician
2023/03/22
8150
Ios海外上架
iOS应用签名(上)
关于iOS应用签名我想一起探讨一下它的原理.首先我们需要了解一个东西,叫做 数字签名 数字签名(digitally signed) 名词解释:为什么用签名这个词.因为老外喜欢用支票,支票上面的签名能够
CC老师
2023/03/23
3940
iOS应用签名(上)
程序员面试闪充--iOS密码学
但凡一个有点追求的iOS开发,总得会点加密技术,要不然用户信息就有可能被其他人获取用来做一些对我们不利的事情。 视频地址: 密码学 一、base64 base64是一种完全可反编译的编码方式,因为编码算法完全公开,所以分分钟就会被破解,所以这个一定不能用于密码的“加密”,一些不需要特别加密的,例如用户名,我们可以用base64进行编码,让人不是一眼就能看出来是什么。 Base64 是网络上最常见的用于传输8Bit 字节代码的编码方式之一,Base64 要求把每三个8Bit 的字节转换为四个6Bit 的字节(
谦谦君子修罗刀
2018/05/02
1.5K0
程序员面试闪充--iOS密码学
Ios上架时间
苹果的ios系统生态一项是流畅安全的,没有乱七八糟的东西,APP都是在苹果App Store应用商店来下载,对于开发者来说,一个APP上架需要经历严格审核,上架前要完成内测,没有上架的APP,怎么来下载呢,很多人会选择用ios签名工具,或者找签名商来完成。
iOS程序应用
2023/01/05
2770
iOS底层 - @synchronized(上)
IOS中的锁是比较困扰大家的一个问题,知道有锁这么个东西,但是却不常用。今天带大家一起走进锁的底层世界。
CC老师
2022/01/11
5480
iOS底层 - @synchronized(上)
在ios系统上实现更改IP地址
在当今的互联网环境中,我们经常需要更改手机的IP地址来避免一些限制或保护我们的隐私。然而,在iOS系统上,更改IP地址并不像在其他平台上那么容易。因此,本文将分享一种简单的方法,帮助您在iOS系统上免费更改手机的IP地址。
华科云商小徐
2023/09/14
1.9K0
iOS上架流程
2.1 打开[苹果开发者官网](https://developer.apple.com),点击Account登陆账号。
iOS程序应用
2022/10/31
3920
iOS上架流程
iOS应用签名(上)
关于iOS应用签名我想一起探讨一下它的原理.首先我们需要了解一个东西,叫做数字签名
iOSSir
2019/04/24
1K0
iOS上架流程
昨天在上线的时候遇到了一个坑,最后导致的结果是找了好几个小时,直接到半夜才能上线。
iOS程序应用
2023/01/05
3280

相似问题

iOS CoreData和AES256加密

10

iOS pdf加密256位AES

10

AES128截断了iOS 7上的解密文本,iOS 8上没有问题

39

AES加密在iOS 13.4上不能正常工作

12

AES256加密/解密Error+ IOS SDK 7

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文