Using RSAPKCS1SignatureDeformatter : RSA « Security « C# / CSharp Tutorial






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);
        }
    }








35.10.RSA
35.10.1.Asymmetric cryptography
35.10.2.Encrypt with RSACryptoServiceProvider
35.10.3.Using RSACryptoServiceProvider
35.10.4.Using RSAPKCS1SignatureDeformatter
35.10.5.RSACryptoServiceProvider reads from xml key
35.10.6.CspParameters and RSACryptoServiceProvider
35.10.7.Encrypt an XML document using an asymmetric key
35.10.8.Use RSAPKCS1SignatureFormatter to create a digital signature and then uses the RSAPKCS1SignatureDeformatter class to verify the signature.