İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Sinema Dizi Akıllı Ev Motosiklet Mikromobilite Kripto Para Sağlık Teknolojileri Son dakika Yazarlar
  1. Ana sayfa
  2. SDN Forum
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

VB.NET AES kriptosunda decriptoyu çalıştıramadım

Vatansever29.07.20116 cevap2.150 görüntüleme
#1
İnternette aes kriptosu ile ilgili yaptığım aramada kullanışlı bir kod buldum ama şifreleme yapıyor şifrelenmiş bilgiyi ise çözmüyor bulduğum kodda mı hata var benim yazdığım koddamı bir bakarmısınız.
Kodu Bulduğum Adres = http://stackoverflow.com/questions/5987186/aes-encrypt-string-in-vb-net
Bana böyle basit aes kriptosu fonksiyonu yada modülü lazım yada aşağıdakini çalışır duruma getirmek lazım
KOD
Public Class Form1

    Private Sub Button1Sifrele_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1Sifrele.Click
        TextBox3Sifrelenmis.Text = AES_Encrypt(TextBox2Anahtar.Text, TextBox1Sifrelenen.Text)
    End Sub

    Private Sub Button2SifreyiCoz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2SifreyiCoz.Click
        TextBox4Cozulmus.Text = AES_Decrypt(TextBox2Anahtar.Text, TextBox3Sifrelenmis.Text)
    End Sub

    Public Function AES_Encrypt(ByVal input As String, ByVal pass As String) As String
        Dim AES As New System.Security.Cryptography.RijndaelManaged
        Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
        Dim encrypted As String = ""
        Try
            Dim hash(31) As Byte
            Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
            Array.Copy(temp, 0, hash, 0, 16)
            Array.Copy(temp, 0, hash, 15, 16)
            AES.Key = hash
            AES.Mode = Security.Cryptography.CipherMode.ECB
            Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateEncryptor
            Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(input)
            encrypted = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
            Return encrypted
        Catch ex As Exception
        End Try
    End Function

    Public Function AES_Decrypt(ByVal input As String, ByVal pass As String) As String
        Dim AES As New System.Security.Cryptography.RijndaelManaged
        Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
        Dim decrypted As String = ""
        Try
            Dim hash(31) As Byte
            Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
            Array.Copy(temp, 0, hash, 0, 16)
            Array.Copy(temp, 0, hash, 15, 16)
            AES.Key = hash
            AES.Mode = Security.Cryptography.CipherMode.ECB
            Dim DESDecrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateDecryptor
            Dim Buffer As Byte() = Convert.FromBase64String(input)
            decrypted = System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
            Return decrypted
        Catch ex As Exception
        End Try
    End Function

End Class
Cevaplar
#2
Böyle dener misin

.....

TextBox4Cozulmus.Text = AES_Decrypt(TextBox3Sifrelenmis.Text, TextBox2Anahtar.Text)

....
Vatansever Konuyu açan
#3
kosasker dedi: ↑
Böyle dener misin

.....

TextBox4Cozulmus.Text = AES_Decrypt(TextBox3Sifrelenmis.Text, TextBox2Anahtar.Text)

....
şimdi denedim ama bir sonuç üretmiyor TextBox4Cozulmus.Text boş
#4
Visual Basic kullanmıyorum malesef, makinamda yüklü değil. burada bulunan -- Public Function AES_Decrypt(ByVal input As String, ByVal pass As String) As String -- sıralama dikkatimi çekti. o yüzden


Private Sub Button2SifreyiCoz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2SifreyiCoz.Click        TextBox4Cozulmus.Text = AES_Decrypt( TextBox3Sifrelenmis.Text, TextBox2Anahtar.Text )    End Sub



bu şekilde olması gerektiğini düşündüm. Yazdığın fonksiyonun tam çalışıp çalışmadığı basitce kontrol ettirmek istersen, Visual basic de hata kontrolü yaptırabilirsin. Kırılma olsun olmasın, bazı hazır fonksiyonlar çalışmayınca, onu taşıyan grup fonksiyon kırılabiliyor. Ben bunu tespit için en basitinden -- cout << "satır" << endl(); -- gibi bir yapı kullanıyorum.

Malesef visual basic bilgim yok. O yüzden sadece mantıksal olarak yardımcı olabiliyorum.
#5

....
        Dim pass As String = "vb.net"
        Dim input As String = "Hello World"
        Dim output As String = ""
        Dim final As String = ""
        output = AES_Encrypt(input, pass)
        final = AES_Decrypt(output, pass)
        MsgBox(final)
....

Kodda hata yok sanırım, parametrelerlerle ilgili hata yapmışsınız. Üsteki şekildeki gibi deneyince sonuç sağlaması ile birlikte çalışıyor
Vatansever Konuyu açan
#6
algea dedi: ↑

....
        Dim pass As String = "vb.net"
        Dim input As String = "Hello World"
        Dim output As String = ""
        Dim final As String = ""
        output = AES_Encrypt(input, pass)
        final = AES_Decrypt(output, pass)
        MsgBox(final)
....

Kodda hata yok sanırım, parametrelerlerle ilgili hata yapmışsınız. Üsteki şekildeki gibi deneyince sonuç sağlaması ile birlikte çalışıyor
Teşekkür ederim sayende oldu dediğin şeyi bende düşünmüştüm paremetreler hatalı olabilir diye ve hertürlü değiştirmiştim ama buton1'deki kodu değiştirince buton2'dekinide değiştirmiştim bu nedenle tutturamamışım demekki sağol aşağıdaki gibi yapınca sorunsuz çalışıyor

Birşey daha sormak istiyorum bu fonkiyonların altında End Function yazısının altında yeşil çizgi beliriyor fareyi üzerinde tutunca aşağıdaki gibi bir mesaj çıkıyor zaman zaman kullandığım fonksiyonlarda bu durumla karşılaşıyorum bu nedir bir sorun oluştururmu acaba
AES_Encrypt işlevi tüm kod yollarında bir değer döndürmüyor.sonuç kullanıldığında çalışma zamanında null başvuru özel durumu oluşabilir

Public Class Form1

    Private Sub Button1Sifrele_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1Sifrele.Click
        TextBox3Sifrelenmis.Text = AES_Encrypt(TextBox1Sifrelenen.Text, TextBox2Anahtar.Text)
    End Sub

    Private Sub Button2SifreyiCoz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2SifreyiCoz.Click
        TextBox4Cozulmus.Text = AES_Decrypt(TextBox3Sifrelenmis.Text, TextBox2Anahtar.Text)
    End Sub

    Public Function AES_Encrypt(ByVal input As String, ByVal pass As String) As String
        Dim AES As New System.Security.Cryptography.RijndaelManaged
        Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
        Dim encrypted As String = ""
        Try
            Dim hash(31) As Byte
            Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
            Array.Copy(temp, 0, hash, 0, 16)
            Array.Copy(temp, 0, hash, 15, 16)
            AES.Key = hash
            AES.Mode = Security.Cryptography.CipherMode.ECB
            Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateEncryptor
            Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(input)
            encrypted = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
            Return encrypted
        Catch ex As Exception
        End Try
    End Function

    Public Function AES_Decrypt(ByVal input As String, ByVal pass As String) As String
        Dim AES As New System.Security.Cryptography.RijndaelManaged
        Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
        Dim decrypted As String = ""
        Try
            Dim hash(31) As Byte
            Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
            Array.Copy(temp, 0, hash, 0, 16)
            Array.Copy(temp, 0, hash, 15, 16)
            AES.Key = hash
            AES.Mode = Security.Cryptography.CipherMode.ECB
            Dim DESDecrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateDecryptor
            Dim Buffer As Byte() = Convert.FromBase64String(input)
            decrypted = System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
            Return decrypted
        Catch ex As Exception
        End Try
    End Function
End Class
#7
Return değeri try block içerisinde kullanıldığı için çıkış noktası olarak return istiyor. Catch kısmına return geri dönüş değeri yada try block dışına return koyarak bunu başarabilirsin. Yeşil çizgililer uyarı mesajı eğer return değeri almadan end function gelirse "return nothing" null değeri geri döndüreceği anlamına geliyor buda fonksiyonu kullanan code kısmında unhandled NullReferenceException ile karşıklığa neden olabileceğinden yeşile uyarıyor

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.

Reklam