System Security Cryptography

Σκοπός αυτού του άρθρου είναι να μας παρουσιάσει την υλοποίηση του RSA .

Δημιουργούμε πρώτα μία κλάση όπως παρακάτω.

Public Class CryptographyClass

Public vPbKey As String

Public vPrKey As String

Public EncryptedByteArray() As Byte

Public DecryptedByteArray() As Byte

Public myKeySize As Integer

Public Function Encrypt(ByVal varData() As Byte, ByVal vPbKeyIn As String) As Boolean

Try

Dim Params As CspParameters = New CspParameters()

Params.Flags = CspProviderFlags.UseMachineKeyStore

Dim RSA As RSACryptoServiceProvider = New RSACryptoServiceProvider(Params)

RSA.FromXmlString(vPbKeyIn)

EncryptedByteArray = RSA.Encrypt(varData, False)

Return True

Catch ex as Exception

'Δέν αποκρυπτογραφήθηκε σωστά

Return False

End Try

End Function

Public Function Decrypt(ByVal varData() As Byte, ByVal vPrKeyIn As String) As Boolean

Try

Dim Params As CspParameters = New CspParameters()

Params.Flags = CspProviderFlags.UseMachineKeyStore

Dim RSA As RSACryptoServiceProvider = New RSACryptoServiceProvider(Params)

RSA.FromXmlString(vPrKeyIn)

DecryptedByteArray = RSA.Decrypt(varData, False)

Return True

Catch ex as Exception

'Δέν κρυπτογραφήθηκε σωστά

Return False

End Try

End Function

Public Function GetNewKey() As Boolean

Try

Dim Params As CspParameters = New CspParameters()

Params.Flags = CspProviderFlags.UseMachineKeyStore

Dim RSA As System.Security.Cryptography.RSACryptoServiceProvider = New RSACryptoServiceProvider(Params)

Me.vPbKey = RSA.ToXmlString(False)

Me.vPrKey = RSA.ToXmlString(True)

myKeySize = RSA.KeySize

Return True

Catch

Return False

End Try

End Function

End Class

Κατόπιν δημιουργούμε μία φόρμα ή οποία νά περιέχει ένα Button (Name=btnGenKey) και πέντε textbox

Name=txtPbKey, Name=txtPrKey,Name=txtToEncrypt,Name=EncryptedTxt,Name=DecryptedTxt

και ακόμα δύο Buttons  Name=btnEncrypt,Name=btnDecrypt

Public Class Form1

Inherits System.Windows.Forms.Form

Private EncryptClass As New CryptographyClass()

Private TargetToEncrypt() As Byte

Private Decrypted() As Byte

Private Encrypted() As Byte

 

'Δημιουργία Private και Public key

Private Sub btnGenKey_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGenKey.Click

EncryptClass.GetNewKey()

Me.txtPrKey.Text = EncryptClass.vPrKey

Me.txtPbKey.Text = EncryptClass.vPbKey

End Sub

'Η Κρυπτογράφηση γίνεται πάντα μέ το Public Key

Private Sub btnEncrypt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEncrypt.Click

Me.TargetToEncrypt = System.Text.Encoding.Default.GetBytes(Me.txtToEncrypt.Text)

If EncryptClass.Encrypt(Me.TargetToEncrypt, Me.txtPbKey.Text) = True Then

Me.Encrypted = EncryptClass.EncryptedByteArray

Me.EncryptedTxt.Text = System.Text.Encoding.Default.GetString(Me.Encrypted)

Else

MsgBox("Δέν μπορεί νά κρυπτογραφηθεί")

End If

End Sub

'Αποκρυπτογράφηση με το Private key που μόνο εμείς διαθέτουμε

Private Sub btnDecrypt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDecrypt.Click

EncryptClass.Decrypt(Me.Encrypted, Me.txtPrKey.Text)

Me.Decrypted = EncryptClass.DecryptedByteArray

Me.DecryptedTxt.Text = System.Text.Encoding.Default.GetString(Me.Decrypted)

End Sub

End Class

Ελπίζω το παραπάνω παράδειγμα νά σας φανεί χρήσιμο.

 

 

Share


Έχουν δημοσιευτεί Πέμπτη, 2 Φεβρουαρίου 2006 2:33 μμ από το μέλος imanos
Καταχώρηση στις κατηγορίες:

Σχόλια:

Χωρίς Σχόλια