PKCS5 заполнение в Objective-C
Есть ли способ получить актуальный отступ PKCS5 в Cocoa Touch? Хотя я хорошо знаю, что для целей дешифрования PKCS7 и PKCS5 совместимы, но мне нужно соответствовать точному методу шифрования, который использует сервер, поскольку зашифрованный пароль хешируется и используется в качестве ключа дешифрования для зашифрованных данных. Это довольно запутанно, но это довольно безопасно. К сожалению, я не думаю, что PKCS7 и PKCS5 могут использоваться взаимозаменяемо, если впоследствии вы хэшируете дополненные строки. Может кто-нибудь мне помочь? Бонусные баллы, если он работает прилично с библиотеками NSData+CommonCrypto или RNCryptor.
1 ответ
Решение
Вот мое решение. Работал как шарм.
NSString *password = @"YOUR PASSWORD HERE";
NSMutableData *passwordData = [[NSMutableData alloc] initWithData:[password dataUsingEncoding:NSUTF8StringEncoding]];
int blockSize = 16;
int charDiv = blockSize - ((passwordData.length + 1) % blockSize);
//PKCS5 Padding
NSMutableString *padding = [[NSMutableString alloc] initWithFormat:@"%c",(unichar)10];
for (int c = 0; c <charDiv; c++) {
[padding appendFormat:@"%c",(unichar)charDiv];
}
[passwordData appendData:[padding dataUsingEncoding:NSUTF8StringEncoding]];
... и ваши дополненные данные будут в passwordData.