MD5 base64 sha1 加密,解密

  1. Objective-c实现MD5和SHA1算法相对还是比较简单的,可以直接调用系统的C/C++共享库来实现调用  
  2. MD5即Message Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一  
  3. SHA即Secure Hash Algorithm(安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院 (NIST) 发布的一系列密码散列函数。  
  4.   
  5.   
  6. 使用方式如下:  
  7. MD5加密方式  
  8.   
  9. SString *) md5  
  10. {  
  11.     const charchar *cStr = [self UTF8String];  
  12.     unsigned char digest[CC_MD5_DIGEST_LENGTH];  
  13.     CC_MD5( cStr, strlen(cStr), digest );  
  14.    
  15.     NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];  
  16.    
  17.     for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)  
  18.         [output appendFormat:@"%02x", digest[i]];  
  19.    
  20.     return output;  
  21. }  
  22. SHA1加密方式  
  23.   
  24. - (NSString*) sha1  
  25. {  
  26.     const charchar *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];  
  27.     NSData *data = [NSData dataWithBytes:cstr length:self.length];  
  28.    
  29.     uint8_t digest[CC_SHA1_DIGEST_LENGTH];  
  30.    
  31.     CC_SHA1(data.bytes, data.length, digest);  
  32.    
  33.     NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];  
  34.    
  35.     for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)  
  36.         [output appendFormat:@"%02x", digest[i]];  
  37.    
  38.     return output;  
  39. }  
  40. 当然也可以结合BASE64来使用,这里的BASE64编码使用 GTMBase64实现,需要导入  
  41.   
  42. - (NSString *) sha1_base64  
  43. {  
  44.     const charchar *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];  
  45.     NSData *data = [NSData dataWithBytes:cstr length:self.length];  
  46.    
  47.     uint8_t digest[CC_SHA1_DIGEST_LENGTH];  
  48.    
  49.     CC_SHA1(data.bytes, data.length, digest);  
  50.    
  51.     NSData * base64 = [[NSData alloc]initWithBytes:digest length:CC_SHA1_DIGEST_LENGTH];  
  52.     base64 = [GTMBase64 encodeData:base64];  
  53.    
  54.     NSString * output = [[NSString alloc] initWithData:base64 encoding:NSUTF8StringEncoding];   
  55.     return output;   
  56. }  
  57.    
  58. - (NSString *) md5_base64  
  59. {  
  60.     const charchar *cStr = [self UTF8String];  
  61.     unsigned char digest[CC_MD5_DIGEST_LENGTH];  
  62.     CC_MD5( cStr, strlen(cStr), digest );  
  63.    
  64.     NSData * base64 = [[NSData alloc]initWithBytes:digest length:CC_MD5_DIGEST_LENGTH];  
  65.     base64 = [GTMBase64 encodeData:base64];  
  66.    
  67.     NSString * output = [[NSString alloc] initWithData:base64 encoding:NSUTF8StringEncoding];   
  68.     return output;  
  69. }  
  70. 以下是实现完整功能,全部代码  GTMBase64 下载地址:http://download.csdn.net/detail/hslinux/7868363
  71.   
  72. //

    //  ViewController.m

    //  Base64AndMD5AndSha1

    //

    //  Created by liuhaiyan on 16/7/4.

    //  Copyright © 2016 qust. All rights reserved.

    //


    #import "ViewController.h"

    #import <CommonCrypto/CommonCrypto.h>

    #import "GTMBase64.h"

    #import "GTMDefines.h"

    @interface ViewController ()


    @end


    @implementation ViewController


    - (void)viewDidLoad {

        [superviewDidLoad];

        // Do any additional setup after loading the view, typically from a nib.

        

        NSLog(@"%@",[selfsha1:@"bviulbvcksdhiu"]);

        NSLog(@"%@",[selfsha1_base64:@"bviulbvcksdhiu"]);

        NSLog(@"%@",[selfbase64:@"rbgiyrbsvjhsg"]);

        NSLog(@"%@",[selfbase641:@"cmJnaXlyYnN2amhzZw=="]);

        NSLog(@"%@",[selfmd5:@"rbgiyrbsvjhsg"]);

        NSLog(@"%@",[selfmd5_base64:@"rbgiyrbsvjhsg"]);






    }


    - (void)didReceiveMemoryWarning {

        [superdidReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }


    - (NSString*) sha1:(NSString *)str

    {

        constchar *cstr = [strcStringUsingEncoding:NSUTF8StringEncoding];

        NSData *data = [NSDatadataWithBytes:cstrlength:str.length];

        

        uint8_t digest[CC_SHA1_DIGEST_LENGTH];

        

        CC_SHA1(data.bytes, (unsigned)data.length, digest);

        

        NSMutableString* output = [NSMutableStringstringWithCapacity:CC_SHA1_DIGEST_LENGTH *2];

        

        for(int i =0; i <CC_SHA1_DIGEST_LENGTH; i++)

            [output appendFormat:@"%02x", digest[i]];

        

        return output;

    }


    - (NSString *) base64:(NSString *)str

    {

        NSData * data = [strdataUsingEncoding:NSASCIIStringEncodingallowLossyConversion:YES];

        data = [GTMBase64encodeData:data];

        NSString * output = [[NSStringalloc]initWithData:dataencoding:NSUTF8StringEncoding];

        return output;

    }


    -(NSString *) md5:(NSString *)str

    {

        constchar *cStr = [strUTF8String];

        unsignedchar digest[CC_MD5_DIGEST_LENGTH];

        CC_MD5( cStr, (unsigned)strlen(cStr), digest );

        

        NSMutableString *output = [NSMutableStringstringWithCapacity:CC_MD5_DIGEST_LENGTH *2];

        

        for(int i =0; i <CC_MD5_DIGEST_LENGTH; i++)

            [output appendFormat:@"%02x", digest[i]];

        

        return output;

    }


    - (NSString *) base641:(NSString *)str

    {

        NSData * data = [strdataUsingEncoding:NSASCIIStringEncodingallowLossyConversion:YES];

        data = [GTMBase64decodeData:data];

        NSString * output = [[NSStringalloc]initWithData:dataencoding:NSUTF8StringEncoding];

        return output;

        

    }


    - (NSString *) sha1_base64:(NSString *)str

    {

        constchar *cstr = [strcStringUsingEncoding:NSUTF8StringEncoding];

        NSData *data = [NSDatadataWithBytes:cstrlength:str.length];

        

        uint8_t digest[CC_SHA1_DIGEST_LENGTH];

        

        CC_SHA1(data.bytes, (unsigned)data.length, digest);

        

        NSData * base64 = [[NSDataalloc]initWithBytes:digestlength:CC_SHA1_DIGEST_LENGTH];

        base64 = [GTMBase64encodeData:base64];

        

        NSString * output = [[NSStringalloc]initWithData:base64encoding:NSUTF8StringEncoding];

        return output;

    }


    - (NSString *) md5_base64:(NSString *)str

    {

        constchar *cStr = [strUTF8String];

        unsignedchar digest[CC_MD5_DIGEST_LENGTH];

        CC_MD5( cStr, (unsigned)strlen(cStr), digest );

        

        NSData * base64 = [[NSDataalloc]initWithBytes:digestlength:CC_MD5_DIGEST_LENGTH];

        base64 = [GTMBase64encodeData:base64];

        

        NSString * output = [[NSStringalloc]initWithData:base64encoding:NSUTF8StringEncoding];

        return output;

    }

    @end


    下面一张截图,为加密后的结果


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值