您的位置:首页 > 其它

md5 的16位32位加密

2015-01-22 19:52 771 查看

一、单一 md5加密(创建继承NSObject)

//md5.h文件
#import <Foundation/Foundation.h>

@interface MyMD5 : NSObject {

}
/*****

MD5 加密
*****/

+(NSString *) md5: (NSString *) inPutText ;
@end
//md5.m文件#import "MyMD5.h"//添加#import <CommonCrypto/CommonDigest.h> 库#import "CommonCrypto/CommonDigest.h"@implementation MyMD5+(NSString *) md5: (NSString *) inPutText{const char *cStr = [inPutText UTF8String];unsigned char result[CC_MD5_DIGEST_LENGTH];CC_MD5(cStr, strlen(cStr), result);return [[NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",result[0], result[1], result[2], result[3],result[4], result[5], result[6], result[7],result[8], result[9], result[10], result[11],result[12], result[13], result[14], result[15]] lowercaseString];}@end

二、双层 16、32位 多层 md5加密 (不需要第三方库)

实例  vc.h文件

#import <UIKit/UIKit.h>@interface ViewController : UIViewController@property (weak, nonatomic) IBOutlet UITextField *srcStringTextField;@property (weak, nonatomic) IBOutlet UILabel *entryptTypeLabel;@property (weak, nonatomic) IBOutlet UILabel *introLabel1;@property (weak, nonatomic) IBOutlet UILabel *resultLabel1;@property (weak, nonatomic) IBOutlet UILabel *introLabel2;@property (weak, nonatomic) IBOutlet UILabel *resultLabel2;@property (weak, nonatomic) IBOutlet UILabel *introLabel3;@property (weak, nonatomic) IBOutlet UILabel *resultLabel3;@property (weak, nonatomic) IBOutlet UILabel *introLabel4;@property (weak, nonatomic) IBOutlet UILabel *resultLabel4;- (IBAction)bgTap:(id)sender;//md5常规加密 按钮- (IBAction)commonMd5BtnPressed:(id)sender;//md5二次加密按钮- (IBAction)secondaryMd5BtnPressed:(id)sender;//sha加密按钮- (IBAction)shaBtnPressed:(id)sender;//ASE加密@end

实例  vc.m文件

#import "ViewController.h"#import <CommonCrypto/CommonDigest.h>@interface ViewController (){NSString *resultString;}- (NSString *)getMd5_32Bit_String:(NSString *)srcString;- (NSString *)getMd5_16Bit_String:(NSString *)srcString;@end@implementation ViewController@synthesize entryptTypeLabel;@synthesize introLabel1;@synthesize introLabel2;@synthesize introLabel3;@synthesize introLabel4;@synthesize resultLabel1;@synthesize resultLabel2;@synthesize resultLabel3;@synthesize resultLabel4;@synthesize srcStringTextField;- (void)viewDidLoad{[super viewDidLoad];}- (void)didReceiveMemoryWarning{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.}- (IBAction)commonMd5BtnPressed:(id)sender {[entryptTypeLabel setText:@"常规md5加密"];[introLabel1 setText:@"32位小写"];[resultLabel1 setText:[self getMd5_32Bit_String:srcStringTextField.text]];//只需将得到的加密字串转化成大写即可[introLabel2 setText:@"32位大写"];[resultLabel2 setText:[[self getMd5_32Bit_String:srcStringTextField.text] uppercaseString]];[introLabel3 setText:@"16位小写"];[resultLabel3 setText:[self getMd5_16Bit_String:srcStringTextField.text]];[introLabel4 setText:@"16位大写"];[resultLabel4 setText:[[self getMd5_16Bit_String:srcStringTextField.text] uppercaseString]];}- (IBAction)secondaryMd5BtnPressed:(id)sender {//实际上就是做两次常规转化[entryptTypeLabel setText:@"二次md5加密"];[introLabel1 setText:@"32位小写"];[resultLabel1 setText:[self getMd5_32Bit_String:[self getMd5_32Bit_String:srcStringTextField.text]]];//只需将得到的加密字串转化成大写即可[introLabel2 setText:@"32位大写"];[resultLabel2 setText:[[self getMd5_32Bit_String:[[self getMd5_32Bit_String:srcStringTextField.text] uppercaseString]]uppercaseString]];[introLabel3 setText:@"16位小写"];[resultLabel3 setText:[self getMd5_16Bit_String:[self getMd5_16Bit_String:srcStringTextField.text]]];[introLabel4 setText:@"16位大写"];[resultLabel4 setText:[[self getMd5_16Bit_String:[[self getMd5_16Bit_String:srcStringTextField.text] uppercaseString]] uppercaseString]];}//sha加密- (IBAction)shaBtnPressed:(id)sender{[entryptTypeLabel setText:@"sha安全哈希加密"];[introLabel1 setText:@"sha1加密"];[resultLabel1 setText:[self getSha1String:srcStringTextField.text]];[introLabel2 setText:@"sha256加密"];[resultLabel2 setText:[self getSha256String:srcStringTextField.text]];[introLabel3 setText:@"sha384加密"];[resultLabel3 setText:[self getSha384String:srcStringTextField.text]];[introLabel4 setText:@"sha512加密"];[resultLabel4 setText:[self getSha512String:srcStringTextField.text]];}- (IBAction)bgTap:(id)sender {[self.srcStringTextField resignFirstResponder];}//16位MD5加密方式- (NSString *)getMd5_16Bit_String:(NSString *)srcString{//提取32位MD5散列的中间16位NSString *md5_32Bit_String=[self getMd5_32Bit_String:srcString];NSString *result = [[md5_32Bit_String substringToIndex:24] substringFromIndex:8];//即9~25位return result;}//32位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;}//sha1加密方式- (NSString *)getSha1String:(NSString *)srcString{const char *cstr = [srcString cStringUsingEncoding:NSUTF8StringEncoding];NSData *data = [NSData dataWithBytes:cstr length:srcString.length];uint8_t digest[CC_SHA1_DIGEST_LENGTH];CC_SHA1(data.bytes, data.length, digest);NSMutableString* result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {[result appendFormat:@"%02x", digest[i]];}return result;}//sha256加密方式- (NSString *)getSha256String:(NSString *)srcString {const char *cstr = [srcString cStringUsingEncoding:NSUTF8StringEncoding];NSData *data = [NSData dataWithBytes:cstr length:srcString.length];uint8_t digest[CC_SHA256_DIGEST_LENGTH];CC_SHA1(data.bytes, data.length, digest);NSMutableString* result = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];for(int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {[result appendFormat:@"%02x", digest[i]];}return result;}//sha384加密方式- (NSString *)getSha384String:(NSString *)srcString {const char *cstr = [srcString cStringUsingEncoding:NSUTF8StringEncoding];NSData *data = [NSData dataWithBytes:cstr length:srcString.length];uint8_t digest[CC_SHA384_DIGEST_LENGTH];CC_SHA1(data.bytes, data.length, digest);NSMutableString* result = [NSMutableString stringWithCapacity:CC_SHA384_DIGEST_LENGTH * 2];for(int i = 0; i < CC_SHA384_DIGEST_LENGTH; i++) {[result appendFormat:@"%02x", digest[i]];}return result;}//sha512加密方式- (NSString*) getSha512String:(NSString*)srcString {const char *cstr = [srcString cStringUsingEncoding:NSUTF8StringEncoding];NSData *data = [NSData dataWithBytes:cstr length:srcString.length];uint8_t digest[CC_SHA512_DIGEST_LENGTH];CC_SHA512(data.bytes, data.length, digest);NSMutableString* result = [NSMutableString stringWithCapacity:CC_SHA512_DIGEST_LENGTH * 2];for(int i = 0; i < CC_SHA512_DIGEST_LENGTH; i++)[result appendFormat:@"%02x", digest[i]];return result;}@end
感谢之前上传的朋友
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  md5 加密 安全 实例