2012-01-13 12 views
0

私は秘密鍵を使用してデータを解読しようとしています。 RSAと秘密鍵を使って鍵を解読することができました。今私は解読されたキーを使用してデータを解読したいと思います。データはPHPを使用してAESとランダムセッションシークレットを使用して暗号化されました。 例があればお知らせください。解読されたキーを使用してデータを解読する

これまでのコードは次のとおりです。

static void Main(string[] args) 
    { 
      AsymmetricCipherKeyPair keyPair; 

     string protectedSecret = "U6XksFkhWV4.......eo3fRg=="; 
     var decodedSecret = Convert.FromBase64String(protectedSecret); 

     string iv = "KLnP....wA=="; 
     var decodedIV = Convert.FromBase64String(iv); 

     using (var reader = File.OpenText(@"c:\\private.key")) 
      keyPair = (AsymmetricCipherKeyPair)new PemReader(reader).ReadObject(); 

     var decryptPKIEngine = new Pkcs1Encoding(new RsaEngine()); 
     decryptPKIEngine.Init(false, keyPair.Private); 

     var secret = Encoding.UTF8.GetString(decryptPKIEngine.ProcessBlock(decodedSecret, 0, decodedSecret.Length)); 

     var protectedData = Convert.FromBase64String("f8..Po="); 
     } 
+0

を必要な場所に必要な文字列を入れてみ置き換えますか?何が問題になっていますか? – SLaks

+0

これで、鍵を使って保護されたデータを解読したいと思います。私はどのようにわからない!助けてくれてありがとう。 – nav100

+0

PHPコードは、暗号化中にAES 256 OFB暗号形式を使用しています。 – nav100

答えて

1

RijndaelManagedインスタンスを作成し、バイト配列にそのKeyIVを設定します。

次に、CreateDecryptor()からMemoryStreamに暗号文のバイト配列をラップしてCryptoStreamを作成します。
最後に、CryptoStreamから平文を読んでください。 (それは実際のテキストだ場合は、StreamReaderをを使用したい場合があります)

0

これはあなたが何をしようとしなかった

static string PHPDecrypt() 
    {    
     byte[] keyBytes = Convert.FromBase64String("U6XksFkhWV4.......eo3fRg=="); //put in your real values here and below for iv and cipherTextBytes 
     byte[] iv = Convert.FromBase64String("KLnP....wA==""); 
     byte[] cipherTextBytes = Convert.FromBase64String("Put the EncryptedText here"); 

     var symmetricKey = new RijndaelManaged 
     { 
     Mode = CipherMode.CBC, 
     IV = iv, KeySize = 256, 
     Key = keyBytes, 
     Padding = PaddingMode.Zeros 
     }; 

     using (var decryptor = symmetricKey.CreateDecryptor()) 
     using (var ms = new MemoryStream(cipherTextBytes)) 
     using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) { 
     var plainTextBytes = new byte[cipherTextBytes.Length]; 
     int decryptedByteCount = cs.Read(plainTextBytes, 0, plainTextBytes.Length); 
     return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount); 
     } 
    } 
+0

あなたのケースの実際のキーサイズは何ですか.. 128,256,1024 ..あなたはあなたの最初の投稿でそれを指定していません。 – MethodMan

+0

サイズは256です。PHPコードはAES 256 OFB暗号フォーマットを暗号化の間使用しています。 – nav100

+0

KeySizeを= 256に更新しました。今すぐ試してください。 – MethodMan

関連する問題