2012-01-13 192 views
0

我試圖使用私鑰解密數據。我能夠使用RSA和私鑰解密密鑰。現在我想用解密的密鑰解密數據。使用AES對數據進行加密,並使用PHP對隨機會話密鑰進行加密。 如果有任何例子,請讓我知道嗎?使用解密密鑰解密數據

這是我到目前爲止的代碼。

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 2012-01-13 19:09:45

+0

現在我想用密鑰解密受保護的數據。我不知道如何!謝謝你的幫助。 – nav100 2012-01-13 19:12:39

+0

PHP代碼在加密時使用AES 256 OFB密碼格式。 – nav100 2012-01-13 19:16:08

回答

1

創建RijndaelManaged實例,並設置其KeyIV你的字節數組。

然後,創建一個CryptoStreamCreateDecryptor()用你的密文字節數組包裝一個MemoryStream
最後,從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 2012-01-13 19:31:41

+0

大小是256. PHP代碼使用AES 256 OFB密碼格式,而加密。 – nav100 2012-01-13 19:35:29

+0

我更新了KeySize爲256.現在試試.. – MethodMan 2012-01-13 19:38:40