///
// 羅向龍版權所有
///
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;
}
}
// 羅向龍版權所有
///
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/