VB.Net/Development/Cryptography

Материал из VB Эксперт
Перейти к: навигация, поиск

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