Tôi khá mới đối với tất cả điều mã hóa này và tôi đang cố gắng làm một ứng dụng đơn giản để mã hóa một chuỗi đã cho. Đây là mã của tôi:Mã hóa với chứng chỉ
public static X509Certificate2 getPublicKey()
{
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
X509Certificate2 cert2 = new X509Certificate2("c:\\certificate.cer");
return cert2;
}
public static string cipherRequest(byte[] stringToEncrypt)
{
X509Certificate2 certificate = getPublicKey();
RSACryptoServiceProvider rsa = certificate.PublicKey.Key as RSACryptoServiceProvider;
byte[] cryptedData = rsa.Encrypt(stringToEncrypt, true);
return Convert.ToBase64String(cryptedData);
}
public static void Main()
{
try
{
ASCIIEncoding ByteConverter = new ASCIIEncoding();
byte[] test = ByteConverter.GetBytes("stringtoencrypt");
string first = cipherRequest(test);
string second= cipherRequest(test);
Console.WriteLine("first: {0}", first);
Console.WriteLine("second: {0}", second);
}
catch(CryptographicException e)
{
Console.WriteLine(e.Message);
}
}
Vì vậy, mỗi lần tôi gọi cipherRequest
nó tạo ra các kết quả khác nhau. Tôi đã kiểm tra chứng chỉ được tải nhưng nó tạo ra các kết quả khác nhau.
Mọi suy nghĩ?
Hành vi này là do thiết kế. Có một vấn đề thực tế? – SLaks
Tại sao bạn có một chuỗi ký tự 'byte []'? – SLaks