建立一个win form程序,然后把代码拷到后台,即可实现C#非对称加密程序 。
using System
using System.Drawing
using System.Collections
using System.ComponentModel
using System.Windows.Forms
using System.Data
using System.IO
using System.Text
using System.Security.Cryptography
namespace 非对称加密
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TabControl tabControl1
private System.Windows.Forms.TabPage tabPage1
private System.Windows.Forms.TabPage tabPage2
private System.Windows.Forms.Button button1
private System.Windows.Forms.Button button2
private System.Windows.Forms.Button button3
private System.Windows.Forms.SaveFileDialog save
private System.Windows.Forms.Label label1
private System.Windows.Forms.TextBox textBox1
private System.Windows.Forms.Button button4
private System.Windows.Forms.Button button5
private System.Windows.Forms.Label label2
private System.Windows.Forms.RichTextBox richtext2
private System.Windows.Forms.OpenFileDialog open
private System.Windows.Forms.Label label3
private System.Windows.Forms.RichTextBox richtext3
private System.Windows.Forms.RichTextBox richtext
private System.Windows.Forms.Button button6
private System.Windows.Forms.Button button7
private System.Windows.Forms.Button button8
/// <summary>
/// 必需的设计器变量。
private static RSACryptoServiceProvider crypt
private static string privatekey
private static string publickey
private static byte [] bytes
private static string publicinfo
private static string privateinfo
private static string readpublickey
private static string readprivatekey
// ///private static byte [] onebytes
/// </summary>
private System.ComponentModel.Container components = null
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent()
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose()
}
}
base.Dispose( disposing )
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.tabControl1 = new System.Windows.Forms.TabControl()
this.tabPage1 = new System.Windows.Forms.TabPage()
this.button6 = new System.Windows.Forms.Button()
this.button3 = new System.Windows.Forms.Button()
this.button2 = new System.Windows.Forms.Button()
this.richtext = new System.Windows.Forms.RichTextBox()
this.button1 = new System.Windows.Forms.Button()
this.tabPage2 = new System.Windows.Forms.TabPage()
this.button8 = new System.Windows.Forms.Button()
this.button7 = new System.Windows.Forms.Button()
this.label3 = new System.Windows.Forms.Label()
this.richtext3 = new System.Windows.Forms.RichTextBox()
this.label2 = new System.Windows.Forms.Label()
this.richtext2 = new System.Windows.Forms.RichTextBox()
this.button5 = new System.Windows.Forms.Button()
this.button4 = new System.Windows.Forms.Button()
this.textBox1 = new System.Windows.Forms.TextBox()
this.label1 = new System.Windows.Forms.Label()
this.save = new System.Windows.Forms.SaveFileDialog()
this.open = new System.Windows.Forms.OpenFileDialog()
this.tabControl1.SuspendLayout()
this.tabPage1.SuspendLayout()
this.tabPage2.SuspendLayout()
this.SuspendLayout()
//
// tabControl1
//
this.tabControl1.Controls.Add(this.tabPage1)
this.tabControl1.Controls.Add(this.tabPage2)
this.tabControl1.Location = new System.Drawing.Point(32, 64)
this.tabControl1.Name = "tabControl1"
this.tabControl1.SelectedIndex = 0
this.tabControl1.Size = new System.Drawing.Size(416, 280)
this.tabControl1.TabIndex = 0
//
// tabPage1
//
this.tabPage1.Controls.Add(this.button6)
this.tabPage1.Controls.Add(this.button3)
this.tabPage1.Controls.Add(this.button2)
this.tabPage1.Controls.Add(this.richtext)
this.tabPage1.Controls.Add(this.button1)
this.tabPage1.Location = new System.Drawing.Point(4, 21)
this.tabPage1.Name = "tabPage1"
this.tabPage1.Size = new System.Drawing.Size(408, 255)
this.tabPage1.TabIndex = 0
this.tabPage1.Text = "得到钥匙"
//
// button6
//
this.button6.Location = new System.Drawing.Point(72, 168)
this.button6.Name = "button6"
this.button6.TabIndex = 4
this.button6.Text = "写入文件"
this.button6.Click += new System.EventHandler(this.button6_Click)
//
// button3
//
this.button3.Location = new System.Drawing.Point(200, 16)
this.button3.Name = "button3"
this.button3.TabIndex = 3
this.button3.Text = "保存私匙"
this.button3.Click += new System.EventHandler(this.button3_Click)
//
// button2
//
this.button2.Location = new System.Drawing.Point(128, 16)
this.button2.Name = "button2"
this.button2.TabIndex = 2
this.button2.Text = "保存公钥"
this.button2.Click += new System.EventHandler(this.button2_Click)
//
// richtext
//
this.richtext.Location = new System.Drawing.Point(16, 56)
this.richtext.Name = "richtext"
this.richtext.Size = new System.Drawing.Size(256, 96)
this.richtext.TabIndex = 1
this.richtext.Text = "richTextBox1"
//
// button1
//
this.button1.Location = new System.Drawing.Point(8, 16)
this.button1.Name = "button1"
this.button1.Size = new System.Drawing.Size(88, 23)
this.button1.TabIndex = 0
this.button1.Text = "得到钥匙信息"
this.button1.Click += new System.EventHandler(this.button1_Click)
//
// tabPage2
//
this.tabPage2.Controls.Add(this.button8)
this.tabPage2.Controls.Add(this.button7)
this.tabPage2.Controls.Add(this.label3)
this.tabPage2.Controls.Add(this.richtext3)
this.tabPage2.Controls.Add(this.label2)
this.tabPage2.Controls.Add(this.richtext2)
this.tabPage2.Controls.Add(this.button5)
this.tabPage2.Controls.Add(this.button4)
this.tabPage2.Controls.Add(this.textBox1)
this.tabPage2.Controls.Add(this.label1)
this.tabPage2.Location = new System.Drawing.Point(4, 21)
this.tabPage2.Name = "tabPage2"
this.tabPage2.Size = new System.Drawing.Size(408, 255)
this.tabPage2.TabIndex = 1
this.tabPage2.Text = "加密解密文字"
//
// button8
//
this.button8.Location = new System.Drawing.Point(216, 72)
this.button8.Name = "button8"
this.button8.TabIndex = 9
this.button8.Text = "读取私匙"
this.button8.Click += new System.EventHandler(this.button8_Click)
//
// button7
//
this.button7.Location = new System.Drawing.Point(56, 72)
this.button7.Name = "button7"
this.button7.TabIndex = 8
this.button7.Text = "读取公匙"
this.button7.Click += new System.EventHandler(this.button7_Click)
//
// label3
//
this.label3.Location = new System.Drawing.Point(200, 120)
this.label3.Name = "label3"
this.label3.Size = new System.Drawing.Size(100, 16)
this.label3.TabIndex = 7
this.label3.Text = "解密结果"
//
// richtext3
//
this.richtext3.Location = new System.Drawing.Point(200, 144)
this.richtext3.Name = "richtext3"
this.richtext3.Size = new System.Drawing.Size(120, 72)
this.richtext3.TabIndex = 6
this.richtext3.Text = "richTextBox2"
//
// label2
//
this.label2.Location = new System.Drawing.Point(48, 120)
this.label2.Name = "label2"
this.label2.Size = new System.Drawing.Size(128, 16)
this.label2.TabIndex = 5
this.label2.Text = "加密窗口:"
//
// richtext2
//
this.richtext2.Location = new System.Drawing.Point(40, 144)
this.richtext2.Name = "richtext2"
this.richtext2.Size = new System.Drawing.Size(120, 72)
this.richtext2.TabIndex = 4
this.richtext2.Text = "richTextBox2"
//
// button5
//
this.button5.Location = new System.Drawing.Point(200, 96)
this.button5.Name = "button5"
this.button5.Size = new System.Drawing.Size(112, 23)
this.button5.TabIndex = 3
this.button5.Text = "使用私匙解密"
this.button5.Click += new System.EventHandler(this.button5_Click)
//
// button4
//
this.button4.Location = new System.Drawing.Point(48, 96)
this.button4.Name = "button4"
this.button4.Size = new System.Drawing.Size(96, 23)
this.button4.TabIndex = 2
this.button4.Text = "使用公匙加密"
this.button4.Click += new System.EventHandler(this.button4_Click)
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(104, 32)
this.textBox1.Multiline = true
this.textBox1.Name = "textBox1"
this.textBox1.Size = new System.Drawing.Size(168, 32)
this.textBox1.TabIndex = 1
this.textBox1.Text = "textBox1"
//
// label1
//
this.label1.Location = new System.Drawing.Point(128, 8)
this.label1.Name = "label1"
this.label1.Size = new System.Drawing.Size(120, 16)
this.label1.TabIndex = 0
this.label1.Text = "请输入加密的文字"
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14)
this.ClientSize = new System.Drawing.Size(504, 357)
this.Controls.Add(this.tabControl1)
this.Name = "Form1"
this.Text = "Form1"
this.tabControl1.ResumeLayout(false)
this.tabPage1.ResumeLayout(false)
this.tabPage2.ResumeLayout(false)
this.ResumeLayout(false)
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1())
}
//得到钥匙信息
private void button1_Click(object sender, System.EventArgs e)
{
crypt=new RSACryptoServiceProvider()
publickey=crypt.ToXmlString(false)
richtext.Text="导出秘匙的情况下:\n"+publickey+"\n"
privatekey=crypt.ToXmlString(true)
string info="仅仅导出公匙的情况下:\n"+privatekey+"\n"
richtext.AppendText(info)
crypt.Clear()
}
//保存公匙信息
private void button2_Click(object sender, System.EventArgs e)
{
save=new SaveFileDialog()
save.Filter="File Text (*.txt)|*.txt|All File (*.*)|*.*"
save.ShowDialog()
publicinfo=save.FileName
}
//保存密匙信息
private void button3_Click(object sender, System.EventArgs e)
{
save=new SaveFileDialog()
save.Filter="File Text (*.txt)|*.txt|All File (*.*)|*.*"
save.ShowDialog()
privateinfo=save.FileName
}
//把钥匙信息写入文件
private void button6_Click(object sender, System.EventArgs e)
{
StreamWriter one=new StreamWriter(publicinfo,true,UTF8Encoding.UTF8)
one.Write(publickey)
StreamWriter two=new StreamWriter(privateinfo,true,UTF8Encoding.UTF8)
two.Write(privatekey)
one.Flush()
two.Flush()
one.Close()
two.Close()
MessageBox.Show("成功保存公匙和密匙!")
}
//用公匙加密
private void button4_Click(object sender, System.EventArgs e)
{
crypt=new RSACryptoServiceProvider()
UTF8Encoding enc=new UTF8Encoding()
bytes=enc.GetBytes(textBox1.Text)
crypt.FromXmlString( readpublickey )
bytes = crypt.Encrypt( bytes,false )
string encryttext=enc.GetString(bytes)//encryptbyte)
richtext2.Text="加密结果:\n"+encryttext+"\n"+"加密结束!"
}
private void button5_Click(object sender, System.EventArgs e)
{
UTF8Encoding enc=new UTF8Encoding()
byte [] decryptbyte
crypt.FromXmlString ( readprivatekey )
decryptbyte = crypt.Decrypt( bytes,false )
string decrypttext=enc.GetString( decryptbyte )
richtext3.Text = "解密结果:\n" + decrypttext + "\n" + "解密结束!"
}
//从文件中读取公匙信息
private void button7_Click(object sender, System.EventArgs e)
{
StreamReader sr
open = new OpenFileDialog( )
open.Filter="Text File (*.txt)|*.txt|All File (*.*)|*.* "
// open.ShowDialog()
if(open.ShowDialog()==DialogResult.OK)
{
sr = new StreamReader(open.FileName,UTF8Encoding.UTF8)
}
else
{
MessageBox.Show("发生错误!")
return
}
readpublickey = sr.ReadToEnd()
sr.Close()
}
//从文件中读取私匙信息
private void button8_Click(object sender, System.EventArgs e)
{
open = new OpenFileDialog( )
open.Filter="Text File (*.txt)|*.txt|All File (*.*)|*.* "
open.ShowDialog()
StreamReader sr = new StreamReader(open.FileName,UTF8Encoding.UTF8)
readprivatekey = sr.ReadToEnd()
sr.Close()
}
}
}
好像没这东西你在编程语言中实现把
这种情况我都是用MD5加密
虽然你不想听理论。。。我也懒得写代码。。。
1、把用户的密码用MD5改变成32个字符
2、将这字符串写到数据库里
3、判断密码是否正确的时候,把用户输入的密码在用MD5改变成32个字符、判断这字符串和数据库中字符串是否相同
下面是JAVA的MD5用法
import java.security.MessageDigest
public class MD5 {
private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }
//将字节数组转换为十六进制字符串
private static String byteArrayToHexString(byte[] b) {
StringBuffer resultSb = new StringBuffer()
for (int i = 0i <b.lengthi++) {
resultSb.append(byteToHexString(b[i]))
}
return resultSb.toString()
}
//将字节转换为十六进制字符
private static String byteToHexString(byte b) {
int n = b
if (n <0)
n = 256 + n
int d1 = n / 16
int d2 = n % 16
return hexDigits[d1] + hexDigits[d2]
}
public static String MD5Encode(String origin) {
String resultString = null
try {
resultString = new String(origin)
//MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法
MessageDigest md = MessageDigest.getInstance("MD5")
resultString = byteArrayToHexString(md.digest(resultString
.getBytes("GBK")))
} catch (Exception ex) {
}
return resultString
}
public static void main(String[] args)
{
System.out.println(MD5.MD5Encode("admin"))
System.out.println(MD5.MD5Encode("密码内容"))
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)