簡體   English   中英

導出加密的 XML 文件並在另一個應用程序中解密?

[英]Exporting encrypted XML file and decrypt in another application?

我正在用 c# 制作一個應用程序來加密導出的 XML 文件,以便人們在導出時無法讀取文件。 用戶下載加密的 XML 文件並將其導入到必須對其進行解密的本地應用程序中。

現在我可以加密文件,但是我如何安全地與其他應用程序共享密鑰以安全地解密那里的 xml 文件?

        static CspParameters cspParams = new CspParameters();
        static RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(cspParams);

        static void Main(string[] args)
        {
            cspParams.KeyContainerName = "XML_ENC_RSA_KEY";

            Console.WriteLine("What do you want to do?");
            Console.WriteLine("");
            Console.WriteLine("- Export");
            Console.WriteLine("- Exit");
            Console.Write("Enter: ");
            if (Console.ReadLine() == "export")
            {
                Export();
                Console.WriteLine("file Exported");
            }

您可以將您的私鑰導出到 .pem 文件,然后其他應用程序可以使用它。

或者,如果您正在談論的另一個應用程序是您在另一台計算機上的自己的應用程序,您可以擴展您的應用程序,以便它允許從 xml 導入,並且您只將這個 xml 分發到您想要的地方

小代碼示例包括:

    byte[] toEncryptData = Encoding.ASCII.GetBytes("<mytest></mytest>");

    //Generate keys
    RSACryptoServiceProvider rsaGenKeys = new RSACryptoServiceProvider();
    string privateXml = rsaGenKeys.ToXmlString(true);
    string publicXml = rsaGenKeys.ToXmlString(false);

    //Encode with public key
    RSACryptoServiceProvider rsaPublic = new RSACryptoServiceProvider();
    rsaPublic.FromXmlString(publicXml);
    byte[] encryptedRSA = rsaPublic.Encrypt(toEncryptData, false);
    string EncryptedResult = Encoding.Default.GetString(encryptedRSA);

    File.WriteAllText("key", privateXml);
    var key = File.ReadAllText("key");

    //Decode with private key
    var rsaPrivate = new RSACryptoServiceProvider();
    rsaPrivate.FromXmlString(key);
    byte[] decryptedRSA = rsaPrivate.Decrypt(encryptedRSA, false);
    string originalResult = Encoding.Default.GetString(decryptedRSA);
    Console.WriteLine(originalResult);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM