IOS各种加密工具类(MD5,RSA,DES)

IOS各种加密工具类(MD5,RSA,DES)_第1张图片
加密

数据安全一直是互联网的核心。对于我们开发来说,数据加密就是对用户的负责。很简单的举个例子:登陆功能,用户要输入密码,如果app传给服务器的密码是明文,那么用户的信息就泄露了。之前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

我把这三个文件都放在这里。

你可能感兴趣的:(IOS各种加密工具类(MD5,RSA,DES))