iOS开发 关于AES256配合base64加密

于服务器方商量加密策略,使用aes256+base64,大多数网上这一整套都有详细的代码,但是不小心就是个大坑,摔好疼。

static NSString *base64_encode_data(NSData *data){

data = [data base64EncodedDataWithOptions:0];

NSString *ret = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

return ret;

}

static NSData *base64_decode(NSString *str){

NSData *data = [[NSData alloc] initWithBase64EncodedString:str options:NSDataBase64DecodingIgnoreUnknownCharacters];

return data;

}

这是base64的代码,系统的所以相当简单。

下面说aes256的


iOS开发 关于AES256配合base64加密_第1张图片

大多数都是这样的加密代码,java服务器要求设置iv向量,于是兴高采烈的设置了下方的NULL,你看iOS的api就是如此便利,简单搞定。咦!!!服务器解不了?什么鬼

char ivPtr[kCCKeySizeAES128+1];

memset(ivPtr, 0, sizeof(ivPtr));

[movestring getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];

上边是设置ivPstr的方法,movestring是与服务器约定的向量字串,可是,哪里不对,服务器说解不了啊,可以用不加向量的方法解开你的假面。。。。。难道我打开了假的aes256?

自己试试,加密使用向量,解密不使用向量。。。。。。解开了,标识泪流满面,什么鬼,原来向量是假的,后来才看到java的padding和Kccoptionmode都与iOS不同,去除ECBmode后 会默认成为CBCmode,这下终于可以了。代码如下:


iOS开发 关于AES256配合base64加密_第2张图片

你可能感兴趣的:(iOS开发 关于AES256配合base64加密)