Anasayfa > Kodlar > Visual Basic 6 ile Aes (Rijndael) Şifreleme Algoritması

Visual Basic 6 ile Aes (Rijndael) Şifreleme Algoritması


Çok hızlı bir şekilde Visual Basic'de dosya ve text şifrelemesi yapabilirsiniz.

AES (Rijndael) Hakkında


Belçikalı vincent rijmen ve joan daemen tarafından geliştirilmiş, des'in ve diğer olası algoritmaların zayıf ve paranoyak yönlerini tamamen temizleyerek, oldukça şık bir matematikle oluşturulmuş algoritma. bruce schneier'in twofish'ini ve rsa'in rc6'sini eleyerek 1997'de nist'in yarışmasını kazanmış ve yeni şifreleme standardı olmuştur. des'in linear ve differential cryptoanalysis karşısında yenik düştüğü durumlara düşmemesi için özel önlemler alınmış, round içerisindeki xor'lamaların birbirine yakın bitlerdeki probabilistic bias'larının  takip edilememesi için, des'te yer almayan mixcolomn ve shiftrow türü işlemlerle 128bitlik 8bitlik 4 satır ve 4 sütüna ayrılmış plaintexti çorbaya döndürmektedir. bugün bilinen tüm akademik ve pratik saldırılara, bruteforce'lara karşı dayanıklı olduğu düşünülmektedir. 128, 256 ve 512 bitlik key'leri destekleyebilmekte, 8bitlik smart card işlemcilerinden 128bitlik olası fütüristik çiplere kadar destekleyebilecek şekilde tasarlanmıştır. ecb ve cbc gibi modlarla kullanılabilmektedir. nsa'ın hiçbirşekilde nasıl oluşturduğunu açıklamadığı ve eff'yi ve diğer meraklı şahsiyetleri(1000'lerce kişilik bir komunite) yıllarca peşinde sürüklediği sbox'lara karşılık aes'in sbox'ı, 8. dereceden irreducible bir polinom olan x^8+x^4+x^3+x+1 ile oluşturduğu finite field ile construct edilmekte olup, açık seçik bir matematiğe dayanmaktadır. 2. round'ın hemen ardından tam bir diffusion gerçekleşmekte ve tek bir byte değiştiğinde sonuçtaki 4 byte'ın hepsi değişmekte ve linear & differential cryptoanalysis demon'larını kendinden uzak tutabilmektedir, ayrıca key scheduler'ında özel olarak round'lar arasındaki key'lerin olası ortak bitlerinin minimize edilmesi için önlemler alınmıştır. bruteforce attack'lar genelde 6 rounda kadar etkili olduklarından eklenen 4 roundun yeterince güvenlik sağladığı düşünülmektedir.

Hazırlanışı


VB'de yeni proje menüsünden DLL yaratma menüsü seçilir. Daha sonra "kod" bölümündeki kod class modulenin içine eklenir. DLL nin özelliklerinden Global Multi Use seçilir. DLL yaratıldıktan sonra; text1 = encryptstring(text1,"şifre yaz",true) ile şifrelenir, text1 = decryptstring(text1,"şifre yaz",true) ile şifre çözülür. ayrıca yeni bir modül eklenip


Public Function FileExist(Filename As String) As Boolean

On Error GoTo NotExist

Call FileLen(Filename)
FileExist = True
Exit Function

NotExist:
FileExist = False
End Function

eklenir.

Kod

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Any, ByVal Source As Any, ByVal Length As Long)
Private Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private byteArray() As Byte
Private hiByte As Long
Private hiBound As Long
Private m_lOnBits(30) As Long
Private m_l2Power(30) As Long
Private m_bytOnBits(7) As Byte
Private m_byt2Power(7) As Byte
Private m_InCo(3) As Byte
Private m_fbsub(255) As Byte
Private m_rbsub(255) As Byte
Private m_ptab(255)  As Byte
Private m_ltab(255)  As Byte
Private m_ftable(255) As Long
Private m_rtable(255) As Long
Private m_rco(29) As Long
Private m_Nk As Long
Private m_Nb As Long
Private m_Nr As Long
Private m_fi(23) As Byte
Private m_ri(23) As Byte
Private m_fkey(119) As Long
Private m_rkey(119) As Long
Public Function DecryptFile(InFile As String, OutFile As String, Overwrite As Boolean, Optional Key As String) As Boolean
On Error GoTo errorhandler
If FileExist(InFile) = False Then
DecryptFile = False
Exit Function
End If
If FileExist(OutFile) = True And Overwrite = False Then
DecryptFile = False
Exit Function
End If
Dim Buffer As String, FileO As Integer
FileO = FreeFile
Open InFile For Binary As #FileO
Buffer = Space$(LOF(1))
Get #FileO, , Buffer
Close #FileO
Buffer = DecryptString(Buffer, Key, False)
If FileExist(OutFile) = True Then Kill OutFile
FileO = FreeFile
Open OutFile For Binary As #FileO
Put #FileO, , Buffer
Close #FileO
DecryptFile = True
Exit Function

errorhandler:
DecryptFile = False
End Function
Public Function DecryptString(Text As String, Optional Key As String, Optional IsTextInHex As Boolean) As String
Dim bytOut() As Byte, bytKey() As Byte, lCount As Long, lLength As Long
bytKey = Key
If IsTextInHex = False Then Text = EnHex(Text)
lLength = Len(Text)
ReDim bytOut((lLength \ 2) - 1)
For lCount = 1 To lLength Step 2
bytOut(lCount \ 2) = CByte("&H" & Mid$(Text, lCount, 2))
Next
DecryptString = DecryptData(bytOut, bytKey)
End Function
Public Function EncryptFile(InFile As String, OutFile As String, Overwrite As Boolean, Optional Key As String) As Boolean
On Error GoTo errorhandler
If FileExist(InFile) = False Then
EncryptFile = False
Exit Function
End If
If FileExist(OutFile) = True And Overwrite = False Then
EncryptFile = False
Exit Function
End If
Dim Buffer As String, FileO As Integer
FileO = FreeFile
Open InFile For Binary As #FileO
Buffer = Space$(LOF(1))
Get #FileO, , Bu

  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: