请教C# RSA加解密签名验签的 字符字节编码问题
用.net的RSA类进行公私钥对签名和验签。RSA.Signdata()的值是byte[]格式,要转成string格式,结果总是乱码。代码如下:
//私钥签名
string pfxpath = @"D:\test.pfx";
string mingwen = "abc123"
X509Certificate2 x5092 = new X509Certificate2(pfxpath, "123456");
RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)x5092.PrivateKey;
byte[] mingwenbyte = Encoding.UTF8.GetBytes(mingwen);
byte[] encrypt = rsa.SignData(mingwenbyte, "SHA1");
string encryptstring1 = encrypt.ToString(); //方法1
string encryptstring2 = Encoding.UTF8.GetString(encrypt); //方法2
string encryptstring3 = Encoding.Default.GetString(encrypt); //方法3
string encryptstring4 = Encoding.Unicode.GetString(encrypt); //方法4
以上用了4种方法,得出的都是乱码,这里说的乱码指:不是像“a783hf73hs3yf7”这样的由数字和英文组成的字符,而是变成了“|QI攟玛8彗n拧&勷|?漄I姩?戻?觿稫o”这样的乱码。
请问应该怎样,才能把签名结果由byte[]转成像“a783hf73hs3yf7”这样的字符串。
另外,用x509.PublicKey.Key.ToXmlString(false)得出的公钥字符串(xml里面的值),和x509.GetPublicKeyString()得到的公钥字符串,也不同 ,应该也是编码的问题。真搞不明白这些编码啊