Im пытается сделать то же самое Sha1 вне в IOS, но результат не то же самое.IOS sha1 неправильный вывод
Благодаря этому ответу SO она должна быть тонкой и тот же результат
это мой C# Код:
using (SHA1 sha1Hash = SHA1.Create())
{
string hash1 = GetSHA1Hash(sha1Hash, "8390495498");
}
static string GetSHA1Hash(SHA1 sha1Hash, string input)
{
byte[] data = sha1_Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
return sBuilder.ToString();
}
результат: d763bd0b5b346a3c95eb4f2912be40c2ce6f0a41
И мой Objective код C:
[sh1obj sha1:@"8390495498"]
- (NSString *)sha1:(NSString *)str {
NSData *data = [str dataUsingEncoding:NSUnicodeStringEncoding];
NSString *unicodePassword = [[NSString alloc] initWithData:data encoding:NSUnicodeStringEncoding];
data = [unicodePassword dataUsingEncoding:NSUnicodeStringEncoding];
data = [NSData dataWithBytes:[data bytes] + 2 length:[data length] - 2];
unsigned char hash[CC_SHA1_DIGEST_LENGTH];
CC_SHA1([data bytes], [data length], hash);
NSData *result = [NSData dataWithBytes:hash length:CC_SHA1_DIGEST_LENGTH];
NSLog(@"Result: %@",result);
return result;
}
результат:241cdda1 6867aaad cb69faed d0975579 f6ec3a07>
я даже попробовал этот тоже:
[sh1obj sha1:@"8390495498"]
- (NSString *)sha1:(NSString *)str {
const char *cStr = [str UTF8String];
unsigned char result[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(cStr, strlen(cStr), result);
NSString *s = [NSString stringWithFormat:
@"%02x%02x%02x%02x%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],
result[16], result[17], result[18], result[19]
];
NSLog(@"Result: %@",s);
return s;
}
и результат был: cbdb5d7936ac9a56846cabad5e9d41942a08b49c
Что делает +2 в dataWithBytes? И вы пробовали NSUTF8StringEncoding? – Thilo
И почему вы помещаете NSData обратно в NSString, а затем снова декодируете его? – Thilo
Я пытаюсь удалить спецификацию с помощью «+2». после того, как я перешел на NSUTF8StringEncoding, он дает мне результат третьего метода. если я удалить метод «+2» это дает мне еще sha1:. 0e225a4e 22393d01 a85a44b4 8d5f3ed3 72515a7d на данный момент не знаю, что делать :( –