資源簡介
ECDSA簽名是美國聯邦的標準,此加密算法利用簽名保存公鑰和私鑰,代碼很簡單!

代碼片段和文件信息
/*
?*?功??能:ECDSA簽名用于密碼技術
?*?
?*?用??法:將數據庫腳本復制到sqlserver新建查詢里執行,【加密】按鈕將輸入的密碼哈希生成簽名存入數據庫(包括公鑰),
?*???????【效驗】按鈕將公鑰以及簽名從數據庫中取出來,通過用簽名效驗用戶輸入的密碼哈希值是否正確
?*
?*?時??間:2010/3/29?15:10:30
?*
?*?程序員:王文壯
?*
?*?Q????Q:1020304029
?*
?*?郵??箱:WangWenzhuang_net@163.com
?*
?*?博??客:http://blog.csdn.net/wangwenzhuang
?*/
using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Linq;
using?System.Text;
using?System.Windows.Forms;
using?System.Data.SqlClient;
using?System.Security.Cryptography;
namespace?ECDSAEncryption
{
????public?partial?class?Form1?:?Form
????{
????????/*?數據庫腳本
???????????USE?MASTER
???????????GO
???????????IF?EXISTS(SELECT?*?FROM?SYSDATAbaseS?WHERE?NAME=‘TEMP_TEST‘)
???????????BEGIN
???????????DROP?DATAbase?TEMP_TEST
???????????END
???????????GO
???????????CREATE?DATAbase?TEMP_TEST
???????????GO
???????????USE?TEMP_TEST
???????????GO
???????????IF?EXISTS(SELECT?*?FROM?SYSobjectS?WHERE?NAME=‘TEMP_USER‘)
???????????BEGIN
???????????DROP?TABLE?TEMP_USER?
???????????END
???????????GO
???????????CREATE?TABLE?TEMP_USER
???????????(
???????????PUBLICKEY?BINARY(140)?NOT?NULL --公鑰
???????????SIGNATURE?BINARY(132)?NOT?NULL --簽名
???????????)
?????????*/
????????SqlConnection?con;
????????public?Form1()
????????{
????????????InitializeComponent();
????????????con?=?new?SqlConnection(“Data?Source=.;Initial?Catalog=TEMP_TEST;Integrated?Security=True“);
????????????con.Open();
????????}
????????private?void?buttonEncryption_Click(object?sender?EventArgs?e)
????????{
????????????///簽名
????????????byte[]?sign;
????????????///公鑰
????????????byte[]?pubKey;
????????????///哈希值
????????????byte[]?hash?=?new?MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(textBoxPasswordInit.Text));
????????????///創建密鑰對
????????????using?(CngKey?key?=?CngKey.Create(CngAlgorithm.ECDsaP521))
????????????{
????????????????///從密鑰對中導出公鑰
????????????????pubKey?=?key.Export(CngKeyBlobFormat.GenericPublicBlob);
????????????????ECDsaCng?eCDsaCng?=?new?ECDsaCng(key);
????????????????///簽名
????????????????sign?=?eCDsaCng.SignHash(hash);
????????????????eCDsaCng.Clear();
????????????}
????????????if?(Command(“INSERT?INTO?TEMP_USER(PUBLICKEYSIGNATURE)?VALUES(@PUBLICKEY@SIGNATURE)“?new?SqlParameter(“@PUBLICKEY“?pubKey)?new?SqlParameter(“@SIGNATURE“?sign))?>?0)
????????????{
????????????????MessageBox.Show(“存入數據庫!“);
????????????}
????????}
????????private?void?buttonValidation_Click(object?sender?EventArgs?e)
????????{
????????????///簽名
????????????byte[]?sign?=?null;
????????????///公鑰
????????????byte[]?pubKey?=?null;
????????????///結果
????????????bool?result;
????????????///哈希值
????????????byte[]?hash?=?new?MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(textBoxPasswordLast.Text));
????????????SqlCommand?cmd?=?new?SqlCommand(“SELECT?PUBLICKEYSIGNATURE?FROM?TEMP_USER“?con);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????11776??2010-03-29?15:18??ECDSAEncryption\ECDSAEncryption\bin\Debug\ECDSAEncryption.exe
?????文件??????26112??2010-03-29?15:18??ECDSAEncryption\ECDSAEncryption\bin\Debug\ECDSAEncryption.pdb
?????文件??????14328??2010-03-29?14:55??ECDSAEncryption\ECDSAEncryption\bin\Debug\ECDSAEncryption.vshost.exe
?????文件????????490??2009-06-11?05:14??ECDSAEncryption\ECDSAEncryption\bin\Debug\ECDSAEncryption.vshost.exe.manifest
?????文件???????3776??2010-03-29?14:24??ECDSAEncryption\ECDSAEncryption\ECDSAEncryption.csproj
?????文件???????4552??2010-03-29?15:18??ECDSAEncryption\ECDSAEncryption\Form1.cs
?????文件???????5841??2010-03-29?15:18??ECDSAEncryption\ECDSAEncryption\Form1.Designer.cs
?????文件???????5814??2010-03-29?15:18??ECDSAEncryption\ECDSAEncryption\Form1.resx
?????文件????????668??2010-03-29?15:07??ECDSAEncryption\ECDSAEncryption\obj\Debug\ECDSAEncryption.csproj.FileListAbsolute.txt
?????文件????????847??2010-03-29?15:18??ECDSAEncryption\ECDSAEncryption\obj\Debug\ECDSAEncryption.csproj.GenerateResource.Cache
?????文件??????11776??2010-03-29?15:18??ECDSAEncryption\ECDSAEncryption\obj\Debug\ECDSAEncryption.exe
?????文件????????180??2010-03-29?15:18??ECDSAEncryption\ECDSAEncryption\obj\Debug\ECDSAEncryption.Form1.resources
?????文件??????26112??2010-03-29?15:18??ECDSAEncryption\ECDSAEncryption\obj\Debug\ECDSAEncryption.pdb
?????文件????????180??2010-03-29?14:24??ECDSAEncryption\ECDSAEncryption\obj\Debug\ECDSAEncryption.Properties.Resources.resources
?????文件????????496??2010-03-29?14:14??ECDSAEncryption\ECDSAEncryption\Program.cs
?????文件???????1362??2010-03-29?14:14??ECDSAEncryption\ECDSAEncryption\Properties\AssemblyInfo.cs
?????文件???????2880??2010-03-29?14:14??ECDSAEncryption\ECDSAEncryption\Properties\Resources.Designer.cs
?????文件???????5612??2010-03-29?14:14??ECDSAEncryption\ECDSAEncryption\Properties\Resources.resx
?????文件???????1100??2010-03-29?14:14??ECDSAEncryption\ECDSAEncryption\Properties\Settings.Designer.cs
?????文件????????249??2010-03-29?14:14??ECDSAEncryption\ECDSAEncryption\Properties\Settings.settings
?????文件????????935??2010-03-29?14:14??ECDSAEncryption\ECDSAEncryption.sln
????..A..H.?????14848??2010-03-29?15:25??ECDSAEncryption\ECDSAEncryption.suo
?????目錄??????????0??2010-03-29?14:16??ECDSAEncryption\ECDSAEncryption\obj\Debug\Refactor
?????目錄??????????0??2010-03-29?14:14??ECDSAEncryption\ECDSAEncryption\obj\Debug\TempPE
?????目錄??????????0??2010-03-29?14:24??ECDSAEncryption\ECDSAEncryption\bin\Debug
?????目錄??????????0??2010-03-29?15:18??ECDSAEncryption\ECDSAEncryption\obj\Debug
?????目錄??????????0??2010-03-29?14:14??ECDSAEncryption\ECDSAEncryption\bin
?????目錄??????????0??2010-03-29?14:14??ECDSAEncryption\ECDSAEncryption\obj
?????目錄??????????0??2010-03-29?14:14??ECDSAEncryption\ECDSAEncryption\Properties
?????目錄??????????0??2010-03-29?15:18??ECDSAEncryption\ECDSAEncryption
............此處省略4個文件信息
評論
共有 條評論