繁体   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