Проблемы с преобразованием Java-кода в цель C - PullRequest
0 голосов
/ 02 октября 2018
MessageDigest md = null;
        try {
            md = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        String resultPassword = dc.profile.sipUsername + ":" + dc.profile.stunServer + ":" + passwd;
        md.update(resultPassword.getBytes());

        byte byteData[] = md.digest();

        StringBuffer sb = new StringBuffer();
        for (int j = 0; j < byteData.length; j++) {
            sb.append(Integer.toString((byteData[j] & 0xff) + 0x100, 16).substring(1));
        }

Я достиг этой точки

NSData *data = [resultPassword dataUsingEncoding:NSUTF16LittleEndianStringEncoding allowLossyConversion:NO];
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    CC_MD5(data.bytes, data.length, digest);
    NSData *hashData = [[NSData alloc] initWithBytes:digest length: sizeof digest];

Но не знаю, иду ли я по правильному пути.Мне нужно конвертировать пароль в md5

1 Ответ

0 голосов
/ 02 октября 2018

Попробуйте следующее:

#import <CommonCrypto/CommonHMAC.h>

NSString *calcMD5(NSString *aString, NSString *key)
{
    const char *cKey  = [key cStringUsingEncoding: NSUTF8StringEncoding];
    const char *cData = [aString cStringUsingEncoding: NSUTF8StringEncoding];

    // Berechnung der MD5-Signatur
    unsigned char cHMAC[CC_MD5_DIGEST_LENGTH];
    CCHmac(kCCHmacAlgMD5, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
    NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC
                                          length:sizeof(cHMAC)];

    // Base64 encoded zurückliefern
    return [HMAC base64EncodedStringWithOptions:0];
}

Или используйте следующее, если ключа нет: Как создать хэш-строку MD5 для строки в Какао?

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