ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RSA數字簽名(未完成)

RSA數字簽名(未完成)

原创 Linux操作系统 作者:lxlong19830815 时间:2011-09-16 18:57:45 0 删除 编辑
///////////////////////////////////////////////////////////////////////////////////////////////
// 羅向龍版權所有
///////////////////////////////////////////////////////////////////////////////////////////////

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博客 ” ,链接:https://blog.itpub.net/25306814/viewspace-707748/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: mytk
请登录后发表评论 登录
全部评论

注册时间:2011-07-19

  • 博文量
    6
  • 访问量
    10909