VB.Net/Development/Cryptography — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 15:45, 26 мая 2010
Содержание
Check X509Certificate file
<source lang="vbnet"> Imports System.Security.Principal Imports System.Security.Permissions Imports System.IO Imports System.Diagnostics Imports System.Security.Cryptography.X509Certificates public class MainClass
Shared Public Sub Main(ByVal CmdArgs() As String) If CmdArgs.Length <> 1 Then Console.Write("usage loadCert <cert file> ") End End If Dim cert As X509Certificate = _ X509Certificate.CreateFromCertFile(CmdArgs(0)) Console.WriteLine("hash= {0}", cert.GetCertHashString()) Console.WriteLine("effective Date= {0}", _ cert.GetEffectiveDateString()) Console.WriteLine("expire Date= {0}", _ cert.GetExpirationDateString()) Console.WriteLine("Issued By= {0}", cert.GetIssuerName()) Console.WriteLine("Issued To= {0}", cert.GetName()) Console.WriteLine("algo= {0}", cert.GetKeyAlgorithm()) Console.WriteLine("Pub Key= {0}", cert.GetPublicKeyString()) End Sub
End Class
</source>
DSA Crypto Service Provider Demo
<source lang="vbnet"> Imports System Imports System.IO Imports System.Security.Cryptography Imports System.Text Public Class DSASign
Public Shared Sub Main(ByVal CmdArgs() As String) If CmdArgs.Length <> 3 Then Console.WriteLine("usage: DSASign <key xml> <sign>") End End If Dim xkey As String = LoadString(CmdArgs(0)) Dim fs As FileStream = File.OpenRead(CmdArgs(1)) Dim dsa As DSACryptoServiceProvider = New DSACryptoServiceProvider dsa.FromXmlString(xkey) Dim sig() As Byte = dsa.SignData(fs) fs.Close() SaveString(CmdArgs(2), Convert.ToString(sig)) Console.WriteLine("Signature in {0}} file", CmdArgs(2)) End Sub Shared Public Sub SaveString(ByVal fname As String, ByVal data As String) Dim datas() As Byte = (New ASCIIEncoding).GetBytes(data) Dim fs As FileStream = File.OpenWrite(fname) fs.SetLength(0) fs.Write(datas, 0, datas.Length) fs.Close() End Sub Shared Public Function LoadString(ByVal fname As String) As String Dim finfo As FileInfo = New FileInfo(fname) Dim length As String = CType(finfo.Length, String) Dim buf() As Byte = New Byte(length) {} Dim fs As FileStream = File.OpenRead(fname) fs.Read(buf, 0, buf.Length) fs.Close() Return (New ASCIIEncoding).GetString(buf) End Function
End Class
</source>
DSA Verify Demo
<source lang="vbnet"> Imports System Imports System.IO Imports System.Security.Cryptography Imports System.Text Public Class DSASign
Public Shared Sub Main(ByVal CmdArgs() As String) If CmdArgs.Length <> 3 Then Console.WriteLine("usage: DSAVerify <key xml> <data> <sign>") End End If Dim xkey As String = LoadString(CmdArgs(0)) Dim data() As Byte = (New ASCIIEncoding).GetBytes(LoadString(CmdArgs(1))) Dim xsig As String = LoadString(CmdArgs(2)) Dim dsa As DSACryptoServiceProvider = New DSACryptoServiceProvider dsa.FromXmlString(xkey) Dim xsigAsByte() As Byte = New Byte(xsig) {} Dim verify As Boolean verify = dsa.VerifyData(data, xsigAsByte) Console.WriteLine("Signature Verification is {0}", verify) End Sub Shared Public Sub SaveString(ByVal fname As String, ByVal data As String) Dim datas() As Byte = (New ASCIIEncoding).GetBytes(data) Dim fs As FileStream = File.OpenWrite(fname) fs.SetLength(0) fs.Write(datas, 0, datas.Length) fs.Close() End Sub Shared Public Function LoadString(ByVal fname As String) As String Dim finfo As FileInfo = New FileInfo(fname) Dim length As String = CType(finfo.Length, String) Dim buf() As Byte = New Byte(length) {} Dim fs As FileStream = File.OpenRead(fname) fs.Read(buf, 0, buf.Length) fs.Close() Return (New ASCIIEncoding).GetString(buf) End Function
End Class
</source>
Generate DSA Key and value
<source lang="vbnet"> Imports System Imports System.IO Imports System.Security.Cryptography Imports System.Text Public Class DSASign
Public Shared Sub Main(ByVal CmdArgs() As String) Dim dsa As DSACryptoServiceProvider = New DSACryptoServiceProvider Dim prv As String = dsa.ToXmlString(True) Dim pub As String = dsa.ToXmlString(False) SaveString("dsa-key.xml", prv) SaveString("dsa-pub.xml", pub) Console.WriteLine("Created dsa-key.xml and dsa-pub.xml") End Sub Shared Public Sub SaveString(ByVal fname As String, ByVal data As String) Dim datas() As Byte = (New ASCIIEncoding).GetBytes(data) Dim fs As FileStream = File.OpenWrite(fname) fs.SetLength(0) fs.Write(datas, 0, datas.Length) fs.Close() End Sub Shared Public Function LoadString(ByVal fname As String) As String Dim finfo As FileInfo = New FileInfo(fname) Dim length As String = CType(finfo.Length, String) Dim buf() As Byte = New Byte(length) {} Dim fs As FileStream = File.OpenRead(fname) fs.Read(buf, 0, buf.Length) fs.Close() Return (New ASCIIEncoding).GetString(buf) End Function
End Class
</source>
SHA1 Crypto Service Provider Demo
<source lang="vbnet"> Imports System Imports System.IO Imports System.Security.Cryptography Imports System.Text Imports System.Runtime.Serialization.Formatters public class MainClass
Shared Public Sub Main(ByVal CmdArgs() As String) If (CmdArgs.Length <> 1) Then Console.WriteLine("usage: TestSHA1 <filename>") End End If Dim fs As FileStream = File.OpenRead(CmdArgs(0)) Dim sha As SHA1 = New SHA1CryptoServiceProvider Dim hash() As Byte = sha.ruputeHash(fs) Dim b64 As String = Convert.ToBase64String(hash) fs.Close() Console.WriteLine(b64) End Sub
End Class
</source>
Test Hash Key
<source lang="vbnet"> Imports System Imports System.IO Imports System.Security.Cryptography Imports System.Text Imports System.Runtime.Serialization.Formatters public class MainClass
Shared Public Sub Main(ByVal CmdArgs() As String) If (CmdArgs.Length <> 1) Then Console.WriteLine("usage: TestKeyHash <filename>") End End If Dim key() As Byte = Encoding.ASCII.GetBytes("My Secret Key".ToCharArray()) Dim hmac As HMACSHA1 = New HMACSHA1(key) Dim fs As FileStream = File.OpenRead(CmdArgs(0)) Dim hash() As Byte = hmac.ruputeHash(fs) Dim b64 As String = Convert.ToBase64String(hash) fs.Close() Console.WriteLine(b64) End Sub
End Class
</source>