nvarchar хранит данные как Unicode, таким образом, если Вы собираетесь хранить многоязычные данные (больше чем один язык) в столбце данных, Вам нужен вариант N.
В .NET, если вы получили сертификат X509 из файла .pfx, например:
X509Certificate2 certificate = new X509Certificate2(certFile, pfxPassword);
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider) certificate.PrivateKey;
Затем вы можете экспортировать общедоступный Ключевая часть выглядит так:
rsaCsp.ToXmlString(false);
«Ложная» часть говорит: экспортировать только открытую часть, не экспортировать частную часть. (документ для RSA.ToXmlString )
Затем в проверяющем приложении используйте
RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
csp.FromXmlString(PublicKeyXml);
bool isValid = VerifyXml(xmlDoc, rsa2);
И VerifyXml вызывает CheckSignature ()
. Это выглядит примерно так:
private Boolean VerifyXml(XmlDocument Doc, RSA Key)
{
// Create a new SignedXml object and pass it
// the XML document class.
var signedXml = new System.Security.Cryptography.Xml.SignedXml(Doc);
// Find the "Signature" node and create a new XmlNodeList object.
XmlNodeList nodeList = Doc.GetElementsByTagName("Signature");
// Throw an exception if no signature was found.
if (nodeList.Count <= 0)
{
throw new CryptographicException("Verification failed: No Signature was found in the document.");
}
// Though it is possible to have multiple signatures on
// an XML document, this app only supports one signature for
// the entire XML document. Throw an exception
// if more than one signature was found.
if (nodeList.Count >= 2)
{
throw new CryptographicException("Verification failed: More that one signature was found for the document.");
}
// Load the first <signature> node.
signedXml.LoadXml((XmlElement)nodeList[0]);
// Check the signature and return the result.
return signedXml.CheckSignature(Key);
}
Любой сертификат имеет публичную и частную части. Вы рассылаете только публичную часть. Просто откройте любой веб-сайт с поддержкой SSL в своем браузере, нажмите на символ замка и посмотрите на его сертификат.