AES128_CBC_NoPading加密、sha256withRSA签名

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)  输出数据实际长度

加密
AES128_CBC_NoPading加密、sha256withRSA签名_第1张图片

解密
AES128_CBC_NoPading加密、sha256withRSA签名_第2张图片

解密先需要将字符串通过base64解码转为NSData后进行 AES128解密
sha256withRSA签名
RSA签名需要Mac端生成公钥和私钥,由于我们项目是后台申请的给了公钥私钥字符串,所以是通过字符串转成SecKeyRef格式。


AES128_CBC_NoPading加密、sha256withRSA签名_第3张图片

主要用到的函数SecKeyRawSign

SecKeyRef          key,               私钥签名
SecPadding          padding,      补码方式 这里 kSecPaddingPKCS1SHA256
const uint8_t      *dataToSign,   数据Data字节长度 bytes
size_t              dataToSignLen,  数据Data length
uint8_t            *sig,                     数据接收
size_t              *sigLen)              实际输出长度
AES128_CBC_NoPading加密、sha256withRSA签名_第4张图片

一般客户端只用来对数据加签,后台验签。
frameworkDemo地址
最近项目用到了,看了很多文章才搞出来,有不对的请指正,谢谢!

你可能感兴趣的:(AES128_CBC_NoPading加密、sha256withRSA签名)