AES128_CBC_NoPading加密、sha256with
2017-09-05 本文已影响0人
微冷l
AES128_CBC_NoPading
AES加密中重要的两个参数KEY、IV且都是16位数字,我这里将IV默认为16个0
加密的数据data长度必须是16的倍数,否则会加密失败,加密前需要检查是否补0处理
主要用到的函数 CCCrypt:
CCAlgorithm alg, kCCAlgorithmAES128
CCOptions options, 0x0000 NoPadding
const void *key, keyData 字节长
size_t keyLength, keyData length
const void *iv, IVData 字节长
const void *dataIn, 加密数据Data字节长
size_t dataInLength, 加密数据Data length
void *dataOut, 输出 数据接收
size_t dataOutAvailable, 输出数据size
size_t *dataOutMoved) 输出数据实际长度
加密
解密
解密先需要将字符串通过base64解码转为NSData后进行 AES128解密
sha256withRSA签名
RSA签名需要Mac端生成公钥和私钥,由于我们项目是后台申请的给了公钥私钥字符串,所以是通过字符串转成SecKeyRef格式。
主要用到的函数SecKeyRawSign
SecKeyRef key, 私钥签名
SecPadding padding, 补码方式 这里 kSecPaddingPKCS1SHA256
const uint8_t *dataToSign, 数据Data字节长度 bytes
size_t dataToSignLen, 数据Data length
uint8_t *sig, 数据接收
size_t *sigLen) 实际输出长度
一般客户端只用来对数据加签,后台验签。
frameworkDemo地址
最近项目用到了,看了很多文章才搞出来,有不对的请指正,谢谢!