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地址
最近项目用到了,看了很多文章才搞出来,有不对的请指正,谢谢!

上一篇 下一篇

猜你喜欢

热点阅读