任何人都可以告诉我下面的代码在做什么。我想使用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);
}
答案 0 :(得分:1)
简而言之,它是RSA使用指定为XML格式的字符串(encryptText
)的参数对字符串(publicKey
)进行加密,然后将结果作为Base64编码的字符串返回。
FromXmlString
是必需的,因为它被用于从XML格式的publicKey
中加载加密参数。