Objective-CAES
でエンコードされた暗号化された文字列を復号化したい:Base64
これは私のコードです:
NSString *base64String = @"RwH0KBSRjFKJQYGsCze0";
NSData *base64Data = [[NSData alloc] initWithBase64EncodedString:
base64String options:0];
char * key = "shouldbe16chars.";
NSUInteger dataLength = [base64Data length];
uint8_t unencryptedData[dataLength + kCCKeySizeAES128];
size_t unencryptedLength;
CCCryptorStatus status = CCCrypt(kCCDecrypt, kCCAlgorithmAES128,
0 , key,kCCKeySizeAES128, NULL, [base64Data bytes],
[base64Data length], unencryptedData, dataLength,
&unencryptedLength);
NSString *output = [[NSString alloc] initWithBytes:
unencryptedData length:unencryptedLength
encoding:NSUTF8StringEncoding];
NSLog(@"status: %d output: %@",status, output);
コードを実行すると、結果は次のようになります。Status = -4301, output = null
ドキュメントによると、ステータス 4301 = 「バッファが小さすぎます」
コードをデバッグするとき、変数は次のように設定されます。
base64Data = 4701f428 14918c52 894181ac 0b37b4
dataLength = 15 bytes
unencryptedLength = 0
unencryptedData = {}
エラーは、オプションkCCOptionPKCS7Padding
が設定されている場合にのみ発生します0
。ステータス = 0、出力 = {} に設定されている場合。
SO で多くのコード サンプルを確認しましたが、コードに問題はありません。
私のコードの何が問題なのか、何か考えはありますか?
ところで:base64string
このサンプル コードで使用しているコードは、オープン ソース フレームワークhttp://www.movable-type.co.uk/scripts/aes.htmlを使用して JavaScript で作成されています。この情報が役立つかどうかはわかりません。