私はOpensslに "Hola mundo"を含むファイルを以下のコマンドで暗号化しました。次に、私はC#を使用してこのファイルを復号化します。OpenSSLのトリプルDES暗号化とC#を使った復号
enc -des-ede -nosalt -in ArchivoNormal.txt -pass file:MiCertificado.cer -out ArchivoEncryptadoTDEOpenSSL.txt
1)
private void DecryptFile(string source, string destination, byte[] bkey)
{
TripleDESCryptoServiceProvider TDES = new TripleDESCryptoServiceProvider();
TDES.Mode = CipherMode.ECB;
TDES.Padding = PaddingMode.PKCS7;
TDES.KeySize = 192;
TDES.BlockSize = 64;
TDES.Key = bkey;
FileStream fsread = new FileStream(source, FileMode.Open, FileAccess.Read);
ICryptoTransform desdecrypt = TDES.CreateDecryptor();
CryptoStream cryptostreamDecr = new CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read);
StreamWriter fsDecrypted = new StreamWriter(destination);
fsDecrypted.Write(new StreamReader(cryptostreamDecr).ReadToEnd());
fsDecrypted.Flush();
fsDecrypted.Close();
}
それはエラー「Datos Incorrectosを返し、暗号化ファイルを復号化するためにMiCertificado.cer
private byte[] GenerateKey()
{
X509Certificate2 cer = new X509Certificate2();
cer.Import("D:\\MiCertificado.cer");
TripleDESCryptoServiceProvider desCrypto = (TripleDESCryptoServiceProvider)TripleDESCryptoServiceProvider.Create();
byte[] results = cer.GetPublicKey();
MD5 md5 = MD5.Create();
int preKeyLength = results.Length;
byte[] prekey = null;
prekey = new byte[preKeyLength];
Buffer.BlockCopy(results, 0, prekey, 0, results.Length);
byte[] key = md5.ComputeHash(prekey);
md5.Clear();
md5 = null;
return key;
}
2)から公開鍵を取得するためには、 "
3DESを使用せず、AESを使用します。これは高度な暗号化規格であり、使用するのが難しくなく、より安全です。 – zaph
それは本当ですが、今回は3DESを使用しなければなりませんが、私はそれを変更できません。 – EduardoUstarez
はい、セキュリティは第二の関心事です。 – zaph