數(shù)據(jù)安全一直是互聯(lián)網(wǎng)的核心挣饥。對于我們開發(fā)來說剑逃,數(shù)據(jù)加密就是對用戶的負(fù)責(zé)。很簡單的舉個例子:登陸功能稍坯,用戶要輸入密碼缀磕,如果app傳給服務(wù)器的密碼是明文,那么用戶的信息就泄露了。之前12306不是出了個事件劣光,用戶信息泄露,密碼也是明文糟把。這是很恐怖的绢涡。好了,不說了遣疯。我們直接上代碼.
MD5
+ (NSString *)getMd5_32Bit_String:(NSString *)srcString
{
const char *cStr = [srcString UTF8String];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5( cStr, strlen(cStr), digest );
NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[result appendFormat:@"%02x", digest[i]];
return result;
}
RSA
對于RSA,我直接用的ideawu的一個github項目雄可。
DES
+(NSString *) encryptUseDES:(NSString *)clearText key:(NSString *)key
{
NSData *data = [clearText dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
unsigned char buffer[1024];
memset(buffer, 0, sizeof(char));
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
kCCAlgorithmDES,
kCCOptionPKCS7Padding| kCCOptionECBMode,
[key UTF8String],
kCCKeySizeDES,
nil,
[data bytes],
[data length],
buffer,
1024,
&numBytesEncrypted);
NSString* plainText = nil;
if (cryptStatus == kCCSuccess) {
NSData *dataTemp = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
plainText = [GTMBase64 stringByEncodingData:dataTemp];
}else{
NSLog(@"DES加密失敗");
}
return plainText;
}
RSA我用到了GTMBase64.h,GTMBase64.m,GTMDefines.h這三個文件缠犀,項目中還需要引用libcommonCrypto.dylib這個庫数苫。
PS
我把這三個文件都放在這里。