.NET如何实现数据加密

.NET如何实现数据加密,第1张

http://www.microsoft.com/china/technet/security/guidance/secmod39.mspx(最好的理论资料)

建立一个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("密码内容"))

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10828432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存