Нужен Java-эквивалент SHA512 для Objective-C - PullRequest
1 голос
/ 13 марта 2012

, поскольку я только начинающий в этой области, этот вопрос может показаться очень тривиальным, но я прошу прощения. У меня есть следующий Java-код:

String passwordSalt = "somesalt";
       byte[] bsalt = base64ToByte(passwordSalt);
       byte[] thePasswordToDigestAsBytes = ("somepassword").getBytes("UTF-8");
       System.out.println("------------------------------"+passwordSalt);
       MessageDigest digest = MessageDigest.getInstance("SHA-512");
        digest.reset();
        digest.update(bsalt);
        byte[] input = digest.digest(thePasswordToDigestAsBytes);
        System.out.println("------------------------------"+byteToBase64(input));

Я хочу добиться того же в Objective-C, и я использую следующий код:

NSData *saltdata = [Base64 decode:@"some base64 encoded salt"];
NSString *passwordDgst;
passwordDgst = @"somepassword";
NSData *input = [passwordDgst dataUsingEncoding: NSUTF8StringEncoding];
    unsigned char hash[CC_SHA512_DIGEST_LENGTH];
    CC_SHA512_CTX context;
    CC_SHA512_Init(&context);
    CC_SHA512_Update(&context, [saltdata bytes], (CC_LONG)[saltdata length]);
    CC_SHA512_Update(&context, [input bytes], (CC_LONG)[input length]);
    CC_SHA512_Final(hash, &context);
    input = [NSMutableData dataWithBytes:(const void *)hash    length:sizeof(unsigned char)*CC_SHA512_DIGEST_LENGTH];
    passwordDgst = [input encodeBase64WithNewlines:NO];

Но похоже, что это генерирует хеш, отличный от кода Java? Это почему? Кто-нибудь может мне это уточнить? Заранее спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...