2

.NET フレームワークに実装された AESManaged アルゴリズムを使用して PDF を暗号化します。ここで説明した例を使用して、ファイルを暗号化する C# コードを実装しました。次に、iPhone アプリケーションを使用してそのファイルを復号化する必要があります (これが要件です)。したがって、このコードを使用してそれを行いますが、エラーを返すことで復号化に失敗しました。

'Error Domain=CommonCryptoErrorDomain Code=-4304 "Decode Error" UserInfo=0x127356c0 {NSLocalizedFailureReason=入力データが正しくデコードまたは復号化されませんでした、NSLocalizedDescription=デコード エラー'

この問題を解決するのを手伝ってくれる人がいますか。

暗号化キーとして 12345678 を使用します。

4

2 に答える 2

0

テストしたことはありませんが、技術的にはこれでうまくいくはずです。どちらの方法も同じアドホック形式を使用しています。

私の認証済み暗号化のを使用して暗号化します。

//use your secret data you want to encrypt instead.
String secretMessage = "Message";

var rnCryptorHeader = new Byte[]{
                            2, //RNCryptor Format version 2
                            0  //RNCryptor Uses password
                        };

//encryptedString is base64 encoded
var encryptedString = AESThenHMAC.SimpleEncryptWithPassword(secretMessage, 
                                                            password:"1234567891011",      
                                                            nonSecretPayload:rnCryptorHeader);

次に、IOS 用のRNCryptorNSData+Base64を使用して復号化します。

//This is the encrypted data passed from .net
NSString *encryptedString = @"AgE8C9E7gsfyOAmSotIOgyLQ0O6mdcuMXXjN/iZa3azym4KVWZAkfykIP6mqMt/qkpfftdB3XQhMkoxtQEM+rA0iHxOvZiNlmA2KJtg6BOnmlg==";

NSData *encryptedData = [NSData dataFromBase64String: encryptedString];
NSError *error;
NSData *decryptedData = [RNDecryptor decryptData:encryptedData
                                    withPassword:@"1234567891011"
                                           error:&error];
NSString *secretMessage = [[[NSString alloc] initWithData:decryptedData
                                                 encoding:NSUTF8StringEncoding] autorelease];

文字列を扱っておらず、バイトを直接扱っているため、これが機能していることを確認したら、この object-c の例とリンクされた c# の例から Base64 および utf8 のエンコード/デコードを削除してください。

于 2013-05-07T12:52:22.373 に答える
0

ほとんどの場合、パスワードから実際のキーを導出する際に問題が発生します (12345678 を直接 AES キーにすることはできません。8 バイトしかありません)。

于 2013-05-06T13:39:58.687 に答える