于服務(wù)器方商量加密策略,使用aes256+base64威兜,大多數(shù)網(wǎng)上這一整套都有詳細(xì)的代碼涨共,但是不小心就是個(gè)大坑,摔好疼抡四。
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的代碼柜蜈,系統(tǒng)的所以相當(dāng)簡單。
下面說aes256的
大多數(shù)都是這樣的加密代碼指巡,java服務(wù)器要求設(shè)置iv向量淑履,于是興高采烈的設(shè)置了下方的NULL,你看iOS的api就是如此便利藻雪,簡單搞定秘噪。咦!C阋指煎!服務(wù)器解不了?什么鬼
char ivPtr[kCCKeySizeAES128+1];
memset(ivPtr, 0, sizeof(ivPtr));
[movestring getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];
上邊是設(shè)置ivPstr的方法便斥,movestring是與服務(wù)器約定的向量字串至壤,可是,哪里不對枢纠,服務(wù)器說解不了啊像街,可以用不加向量的方法解開你的假面。。镰绎。脓斩。。難道我打開了假的aes256跟狱?
自己試試俭厚,加密使用向量户魏,解密不使用向量驶臊。。叼丑。关翎。。鸠信。解開了纵寝,標(biāo)識淚流滿面,什么鬼星立,原來向量是假的爽茴,后來才看到j(luò)ava的padding和Kccoptionmode都與iOS不同,去除ECBmode后 會(huì)默認(rèn)成為CBCmode绰垂,這下終于可以了室奏。代碼如下: