AES加密数据对照网站:
http://tool.chacuo.net/cryptaes
如题,iOS中使用AES加密的时候,如果密码过长,比如是32位密码,会导致加密数据不正确,跟一下代码,同样的数据,如果加密出来的和网站上的结果不一样,就说明加密方法不对(不要怀疑网站~)
现在网上的资料一般能找到2种普遍方法:NSData+AES128 和 NSData+AES256
可参考如下资料: https://www.jianshu.com/p/7a28b6ae7481 内容写的非常详细
在iOS中使用AES进行加密解密的一个关键的函数:
CCCryptorStatus CCCrypt(
CCOperation op, /* kCCEncrypt, etc. */
CCAlgorithm alg, /* kCCAlgorithmAES128, etc. */
CCOptions options, /* kCCOptionPKCS7Padding, etc. */
const void *key,
size_t keyLength,
const void *iv, /* optional initialization vector */
const void *dataIn, /* optional per op and alg */
size_t dataInLength,
void *dataOut, /* data RETURNED here */
size_t dataOutAvailable,
size_t *dataOutMoved)
__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
如果密码是32长度的字符串,加密出来的数据是不正确的,就算调整const void *key
参数为char keyPtr[kCCKeySizeAES256+1]
结果还是和网站加密出来的不一样,出现这种情况后,原因之一就是密码长度是32导致的
这是大神用C语言写的AES加密解密方法,可解决上面那种不正确的情况