CSharp和javascript中的FromXmlString

时间:2019-02-01 11:52:56

标签: javascript c# node.js encryption

任何人都可以告诉我下面的代码在做什么。我想使用Nodejs来实现。我对CSharp完全陌生

此方法FromXmlString是否真的是此处加密所必需的。请帮助

public void FromXmlString(RSACryptoServiceProvider rsa, string xmlString)
    {
        RSAParameters parameters = new RSAParameters();

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlString);

        if (xmlDoc.DocumentElement.Name.Equals("RSAKeyValue"))
        {
            foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
            {
                switch (node.Name)
                {
                    case "Modulus": parameters.Modulus = Convert.FromBase64String(node.InnerText); break;
                    case "Exponent": parameters.Exponent = Convert.FromBase64String(node.InnerText); break;
                    case "P": parameters.P = Convert.FromBase64String(node.InnerText); break;
                    case "Q": parameters.Q = Convert.FromBase64String(node.InnerText); break;
                    case "DP": parameters.DP = Convert.FromBase64String(node.InnerText); break;
                    case "DQ": parameters.DQ = Convert.FromBase64String(node.InnerText); break;
                    case "InverseQ": parameters.InverseQ = Convert.FromBase64String(node.InnerText); break;
                    case "D": parameters.D = Convert.FromBase64String(node.InnerText); break;
                }
            }
        }
        rsa.ImportParameters(parameters);
    }

 public string EncryptAsymmetric(string encryptText, string publicKey)
    {
        bool isOAEP = false;
        byte[] byteEncrypt = Encoding.UTF8.GetBytes(encryptText);
        byte[] encryptedData;

        var RSA = new RSACryptoServiceProvider();


        FromXmlString(RSA, publicKey);

        encryptedData = RSA.Encrypt(byteEncrypt, isOAEP);

        return Convert.ToBase64String(encryptedData);
    }

1 个答案:

答案 0 :(得分:1)

简而言之,它是RSA使用指定为XML格式的字符串(encryptText)的参数对字符串(publicKey)进行加密,然后将结果作为Base64编码的字符串返回。

FromXmlString是必需的,因为它被用于从XML格式的publicKey中加载加密参数。