0
我需要将其转换为Objective-C,任何人都可以帮忙吗?将C#转换为Objective-C-MD5和base 64字符串
var randomString = "abc";
var computedHash = Convert.ToBase64String(new MD5CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(computedValue)));
这是怎么回事?
我以为是:
- 从randomString
- MD5得到字节数据
- 转换结果到数据
- 数据转换为Base 64字符串。
这是我走到这一步:
NSString * completeString = @"abc";
NSData * bytes = [completeString dataUsingEncoding:NSUTF8StringEncoding];
NSString * md5ed = [bytes md5];
NSData * data = [md5ed dataUsingEncoding:NSUnicodeStringEncoding];
NSString * base64 = [NSString base64StringFromData:data length:[data length]];
我使用一个类来生成MD5哈希值。
@implementation NSData (Crypto)
-(NSString*)md5{
const char *cStr = [self bytes];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5(cStr, [self length], digest);
NSString* s = [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
digest[0], digest[1],
digest[2], digest[3],
digest[4], digest[5],
digest[6], digest[7],
digest[8], digest[9],
digest[10], digest[11],
digest[12], digest[13],
digest[14], digest[15]];
return s;
}
@end
'ComputeHash'输出一个字节数组,但是你的MD5实现输出一串十六进制字符。 – jnic
我应该从我的md5实现中返回摘要吗? – Daniel