有什么方法可以在Cocoa Touch中获得实际的PKCS5填充?虽然我很清楚,出于解密目的,PKCS7和PKCS5是兼容的,但是我需要匹配服务器使用的确切加密方法,因为加密的密码被散列并用作加密数据的解密 key 。这很令人费解,但是非常安全。不幸的是,如果您随后对填充的字符串进行哈希处理,我认为PKCS7和PKCS5不能互换使用。谁能帮我?如果与NSData + CommonCrypto或RNCryptor库配合得当,将获得加分。

最佳答案

这是我的解决方案。像魅力一样工作。

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中。

关于iphone - Objective-C中的PKCS5填充,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11728947/

10-09 02:18