public static void TestClassInit(TestContext context) { _rsaProvider = new RSACryptoServiceProvider(); string publicKeyXml = _rsaProvider.ToXmlString(false); string privateKeyXml = _rsaProvider.ToXmlString(true); _rsaPublicXml = publicKeyXml; _rsaPrivateXml = privateKeyXml; _rsaPublic = RSAPublicKey.FromXmlString(publicKeyXml); _rsaPrivate = RSAPrivateKey.FromXmlString(privateKeyXml); }
private void test2() { RSACryptoServiceProvider _rsa = new RSACryptoServiceProvider(); RSAParameters parameters = _rsa.ExportParameters(true); string Exponent = BitConverter.ToString(parameters.Exponent); string Mosulus = BitConverter.ToString(parameters.Modulus); string D = BitConverter.ToString(parameters.D); string publicKey = _rsa.ToXmlString(false); string privateKey = _rsa.ToXmlString(true); _rsa.Clear(); RSAPublicKey _publicKey = RSAPublicKey.FromXmlString(publicKey); RSAPrivateKey _privateKey = RSAPrivateKey.FromXmlString(privateKey); string input = "这个极简单的 BigInteger 类的全部源程序代码可以在本随笔开头给出的 URL 中找到,只有五十多行。她是基于 10 进制的,内部使用一个 int[] 来存储,需要事先指定该数组的大小,不能动态增长,而且只能表示非负整数。"; PublicKeyEncrypt(input, _publicKey, _privateKey); PublicKeySign(input, _publicKey, _privateKey); }
public static bool Verify(string data, string privateKey, HashAlgorithm hash, string signature) { return(Verify(Encoding.UTF8.GetBytes(data), RSAPrivateKey.FromXmlString(privateKey), hash, Encoding.UTF8.GetBytes(signature))); }
public static string Decrypt(string data, string privateKey) { return(Encoding.UTF8.GetString(Decrypt(Convert.FromBase64String(data), RSAPrivateKey.FromXmlString(privateKey)))); }