VB.Net/Development/Cryptography
Содержание
Check X509Certificate file
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
DSA Crypto Service Provider Demo
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> <data> <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
DSA Verify Demo
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
Generate DSA Key and value
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
SHA1 Crypto Service Provider Demo
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
Test Hash Key
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