2017-05-10 5 views
0

私たちはPHPのopenssl_encrypt関数を使用して第三者にデータを暗号化する必要があるプロジェクトを持っています。ただし、C#を使用してアプリケーションを開発しています。PHPから来るC#でAES暗号化を使用するには?

$data = "hello world"; 
$key = ""very secret key; 
base64_encode(openssl_encrypt($data, "aes-256-cbc", $key, OPENSSL_RAW_DATA)); 

どのようにC#で同じことを達成できますか?

ありがとうございます。

+0

C#に "openssl_encrypt"があるかどうかを知りたいですか? –

+0

はい。 C#に相当する関数がある場合。 – Artvader

+0

これほど多くのGoogle検索結果... –

答えて

0

C#は

に建てられたAES暗号化を持っていますが、それを使用する前に、あなたはDecrypt string in C# that was encrypted with PHP openssl_encryptを通過する必要があります - 。

ので、PHPでもキー導出アルゴリズムjust takes the bytes of the passphrase and pads it out with zero's

を使用していませんivとキーを取得したら、AesManagedとCrytproStreamを使ってデータを暗号化できます。

 byte[] iv = null; // get iv form pw 
     byte[] key = null; // get key from pw 
     using (AesManaged cryptor = new AesManaged()) 
     { 

      ivhex = BitConverter.ToString(iv).Replace("-", string.Empty); 
      keyhex = BitConverter.ToString(key).Replace("-", string.Empty); 

      // Encrypt File 
      using (var ms = new MemoryStream()) 
      { 
       cryptor.Mode = CipherMode.CBC; 
       cryptor.Padding = PaddingMode.PKCS7; 
       cryptor.KeySize = 256; 
       cryptor.BlockSize = 256; 

       //We use the random generated iv created by AesManaged 
       using (CryptoStream cs = new CryptoStream((Stream)ms, cryptor.CreateEncryptor(key, iv), CryptoStreamMode.Write)) 
       { 
        using (StreamWriter swEncrypt = new StreamWriter(cs)) 
        { 

          swEncrypt.Write(text); 

        } 
       } 

       return Convert.ToBase64String(ms.ToArray()); 
      } 
     } 
関連する問題