#include <openssl/md5.h>- (Nsstring*) MD5Hasher: (Nsstring*) query { NSData* hashed = [query dataUsingEnCoding:NSUTF8StringEnCoding]; unsigned char *digest = MD5([hashed bytes],[hashed length],NulL); Nsstring *final = [Nsstring stringWithUTF8String: (char *)digest]; return final;}
我得到这个代码从StackOverflow的另一个类似的问题的答案,但我得到以下错误从GDB当程序打破返回final;
(gdb) p digest = (unsigned char *) 0xa06310e4 "06b0/66^1\b\a/9054"(gdb) po finalCannot access memory at address 0x0(gdb) po digestProgram received signal EXC_BAD_ACCESS,Could not access memory.Reason: KERN_INVALID_ADDRESS at address: 0xb06236300x98531ed7 in objc_msgSend ()The program being deBUGged was signaled while in a function called from GDB.GDB has restored the context to what it was before the call.To change this behavior use "set unwindonsignal off"Evaluation of the Expression containing the function(_nsprintForDeBUGger) will be abandoned.
我不能有任何意义。
解决方法 这是我使用的类别:Nsstring MD5.h
@interface Nsstring (MD5)- (Nsstring *)MD5String;@end
Nsstring MD5.m
#import <CommonCrypto/CommonDigest.h>@implementation Nsstring (MD5)- (Nsstring *)MD5String { const char *cstr = [self UTF8String]; unsigned char result[16]; 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] ]; }@end
用法
Nsstring *myString = @"test";Nsstring *md5 = [myString MD5String]; // returns Nsstring of the MD5 of test总结
以上是内存溢出为你收集整理的objective-c – 如何在Cocoa中创建一个字符串的MD5哈希?全部内容,希望文章能够帮你解决objective-c – 如何在Cocoa中创建一个字符串的MD5哈希?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)