您必须通过发送用户名和密码的Web服务执行登录。 问题是服务器需要一个奇怪的MD5格式的密码,我无法生成它。
示例
NSString password = @".";
NSString md5 = @"5058f1af8388633f609cadb75a75dc9d";
服务器MD5 “PXñ¯ƒc?`œ·ZuÜ”。
我需要在“PXñ¯ƒc?`œ·ZuÜ”中转换 5058f1af8388633f609cadb75a75dc9d ,但我没有想法。
修改
我发现结果是 5058f1af8388633f609cadb75a75dc9d 字符串的散列。这是服务器上的.NET
代码:
byte[] passwordBytesEnc = UTF8Encoding.Default.GetBytes(".");
byte[] passwordBytesHash = MD5.Create().ComputeHash(passwordBytesEnc);
string passwordCriptata = UTF8Encoding.Default.GetString(passwordBytesHash);
答案 0 :(得分:2)
试试这个..
- (NSString *)MD5String:(NSString *)string{
const char *cstr = [string UTF8String];
NSLog(@"%s",cstr);
unsigned char result[16];
CC_MD5(cstr, strlen(cstr), result);
NSLog(@"%s",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]
];
}
并像这样打电话
NSString *md5 = @"5058f1af8388633f609cadb75a75dc9d";
[self MD5String:md5];
答案 1 :(得分:0)
那么,您的服务器期望的是MD5-Hex值的字符串表示(无论出于何种原因......)。
您可以将Hex-Value转换为字符串,如下所示:
NSString *string = @"5058f1af8388633f609cadb75a75dc9d";
NSMutableString * newString = [[NSMutableString alloc] init]; //will contain your result-string
int i = 0;
while (i < [string length])
{
NSString * hexChar = [string substringWithRange: NSMakeRange(i, 2)];
int value = 0;
sscanf([hexChar cStringUsingEncoding:NSASCIIStringEncoding], "%x", &value);
[newString appendFormat:@"%c", (char)value];
i+=2;
}