RSA數字簽名(未完成)

///
// 羅向龍版權所有
///

using System;
using System.Windows;
using System.IO;
using System.Diagnostics;
using Microsoft.Win32;
using System.Security.Cryptography;

namespace MyRSA
{
    ///
    /// Interaction logic for Window1.xaml
    ///
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            string riginFile = txtOriginFile.Text.Trim();
            if (originFile == string.Empty)
            {
                MessageBox.Show("請先選擇明文文件!", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            if (!File.Exists(originFile))
            {
                MessageBox.Show("明文文件不存在!", "錯誤", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (RSASignatrue.AddFileSignature(originFile, originFile + ".sign"))
            {
                MessageBox.Show("對文件簽名成功!", "成功", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                MessageBox.Show("對文件簽名失敗!", "錯誤", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void btnSelectOriginFile_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog fileDlg = new OpenFileDialog();
            fileDlg.RestoreDirectory = true;
            fileDlg.InitialDirectory = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
            Nullable result = fileDlg.ShowDialog();
            if (result == true)
            {
                txtOriginFile.Text = fileDlg.FileName;
            }
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            string riginFile = txtOriginFile.Text.Trim();
            if (originFile == string.Empty)
            {
                MessageBox.Show("請先選擇明文文件!", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            if (!File.Exists(originFile))
            {
                MessageBox.Show("明文文件不存在!", "錯誤", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (RSASignatrue.VerifySignature(originFile, originFile + ".sign"))
            {
                MessageBox.Show("簽名驗證成功!", "成功", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                MessageBox.Show("簽名驗證失敗!", "錯誤", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
    }
}



public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding)
        {
            try
            {
                //Create a new instance of RSACryptoServiceProvider.
                RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

                //Import the RSA Key information. This only needs
                //toinclude the public key information.
                RSA.ImportParameters(RSAKeyInfo);

                //Encrypt the passed byte array and specify OAEP padding. 
                //OAEP padding is only available on Microsoft Windows XP or
                //later. 
                return RSA.Encrypt(DataToEncrypt, DoOAEPPadding);
            }
            //Catch and display a CryptographicException 
            //to the console.
            catch
            {
                return null;
            }

        }
        //解密方法
        public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding)
        {
            try
            {
                //Create a new instance of RSACryptoServiceProvider.
                RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

                //Import the RSA Key information. This needs
                //to include the private key information.
                RSA.ImportParameters(RSAKeyInfo);

                //Decrypt the passed byte array and specify OAEP padding. 
                //OAEP padding is only available on Microsoft Windows XP or
                //later. 
                return RSA.Decrypt(DataToDecrypt, DoOAEPPadding);
            }
            //Catch and display a CryptographicException 
            //to the console.
            catch
            {
                return null;
            }

        }







来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25306814/viewspace-707748/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25306814/viewspace-707748/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值