VB.Net/Development/Cryptography

Материал из VB Эксперт
Версия от 15:45, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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>