using System;
using System.IO;
using System.Security;
using System.Security.Cryptography;
using System.Collections.Generic;
using System.Text;
class Program
{
static void Main(string[] args)
{
string verifiableMesage = "this is a test";
string wrongMessage = "this is another test";
SHA1Managed sha = new SHA1Managed();
byte[] verifiableMessageHash = sha.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(verifiableMesage));
byte[] wrongMessageHash = sha.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(wrongMessage));
FileStream fs = new FileStream("signedHash.dat", FileMode.Open);
byte[] fileHash = new byte[fs.Length];
fs.Read(fileHash, 0, (int)fs.Length);
fs.Close();
StreamReader sr = File.OpenText("myKey.xml");
string myKey = sr.ReadToEnd();
sr.Close();
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(myKey);
RSAPKCS1SignatureDeformatter sigDeformatter = new RSAPKCS1SignatureDeformatter(rsa);
sigDeformatter.SetHashAlgorithm("SHA1");
Console.WriteLine(sigDeformatter.VerifySignature(verifiableMessageHash, fileHash));
Console.WriteLine(sigDeformatter.VerifySignature(wrongMessageHash, fileHash) == false);
}
}