最近跟加密杠上了,這里先說(shuō)說(shuō)base64加密,后續(xù)會(huì)繼續(xù)增加各種加密方式
1、base64 + “KEY” 異或加密
簡(jiǎn)單的base64加密這里就不介紹了,主要都是使用第三方庫(kù)“CTMBase64” ,一段代碼搞定
[string base64EncodedString];
重點(diǎn)的是在明文添加一個(gè)“KEY”字符串并進(jìn)行異或運(yùn)算,得出另外一個(gè)字符串,然后再進(jìn)行base64加密。因?yàn)閎ase64加密是可逆的(MD5加密不可逆),很容易就泄漏密碼,不安全,所以一般都是跟后臺(tái)商量好一定的法則,在原來(lái)的基礎(chǔ)上添加或者重新排序的方法對(duì)明文進(jìn)行變更...
代碼如下:
#pragma mark - base64 + KEY 加密
- (NSString *)encodeString:(NSString *)sourceString withKey:(NSString *)keyString{
if ([sourceString isEqualToString:@""]||[keyString isEqualToString:@""]) {
return @"";
}
//密碼轉(zhuǎn)字節(jié)數(shù)組
NSData *source = [sourceString dataUsingEncoding:NSUTF8StringEncoding];
Byte *sourceBytes = (Byte *)[source bytes];
//KEY轉(zhuǎn)字節(jié)數(shù)組
NSData *key = [keyString dataUsingEncoding:NSUTF8StringEncoding];
Byte *keyBytes = (Byte *)[key bytes];
//異或運(yùn)算
int i=0;
int j=0;
for (; i<source.length; j++) {
if (j==key.length){
j=0;
}
sourceBytes[i] = sourceBytes[i]^keyBytes[j];
i++;
}
//對(duì)密文與KEY異活運(yùn)算得出的字符串進(jìn)行base64加密
NSData *resultData = [[NSData alloc]initWithBytes:sourceBytes length:source.length];
return [resultData base64EncodedString];
}
特別感謝以下博客的內(nèi)容:
http://blog.csdn.net/wscqqlucy/article/details/8268412