5

Cocoa Touch で実際の PKCS5 パディングを取得する方法はありますか? 復号化の目的で PKCS7 と PKCS5 に互換性があることは十分承知していますが、暗号化されたパスワードはハッシュされ、暗号化されたデータの復号化キーとして使用されるため、サーバーが使用する暗号化方法と正確に一致させる必要があります。かなり複雑ですが、かなり安全です。残念ながら、後でパディングされた文字列をハッシュする場合、PKCS7 と PKCS5 を同じ意味で使用できるとは思いません。誰でも私を助けることができますか?NSData+CommonCrypto または RNCryptor ライブラリで適切に動作する場合はボーナス ポイントです。

4

1 に答える 1

4

これが私の解決策です。魅力のように働きました。

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 になります。

于 2013-02-27T18:17:18.363 に答える