Согласно this site MySQL использует:Objective C: Генерация хэш путь MySQL пароль() делает
SHA1(UNHEX(SHA1("this_is_a_random_string")))
Чтобы сгенерировать свой пароль() хэш.
...
Я скопировал эту функцию, с другой StackOverflow post:
- (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]
];
return s;
}
Для создания sh1 хэшей. Но, как говорится в первой ссылке:
второй SHA1() применяется к двоичным данным, возвращаемым первым SHA1(), а не к его шестнадцатеричному представлению. Поэтому в SQL я должен использовать UNHEX() перед применением второго SHA1.
Так что я должен сделать что-то вроде:
NSString * a = [self sha1:@"abc"];
// convert a into binary data.
NSString * b = [self:sha1:a];
Но все, что я стараюсь, я не могу заставить его работать.
Каков самый простой способ сделать это?
Спасибо!
unhex в основном шестнадцатеричной в двоичном виде. – StefanS
http://stackoverflow.com/questions/7317860/converting-hex-nsstring-to-nsdata – StefanS