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