RC4 Şifreleme
Ronald Rivest, RSA tarafından 1987 yılında bulunmuştur. 1994 yılında meçhul kişilerce
kaynak kodu internette yayınlanmıştır. Bu nedenle itibarını kaybetmiş ve yerini başka algoritmalara bırakmıştır. Kullanımı lisans gerektirmektedir.
Simetrik şifreleme algoritması olarak kullanır. Yani şifrelenen değer yada metin doğru anahtar ile geriye döndürülebilir. Genellikle simetrik algoritmalarda
elektronik yongaların sevdiği ve/veya, dışarlayıcı-veya (XOR) gibi basit işlemler için
kullanır.
WEP ve de SSLde kullanılan RC4 bu türün en bilinen örneğidir...
RC4 algoritması şifrelenecek veriyi akan bir bit dizisi olarak algılar. RC4 belirlenen anahtar ile veriyi şifreleyen bir algoritmadır.
RC4′ün başlıca özellikleri şunlardır:
*- Genellikle hız gerektiren uygulamalarda kullanılır.
*- Şifreleme hızı yüksektir ve MB/sn seviyesindedir.
*- Güvenliği rastgele bir anahtar kullanımına bağlıdır.
*- Anahtar uzunluğu değişkendir.
*- 128 bitlik bir RC4 şifrelemesi sağlam bir şifreleme
olarak kabul edilir.
*- Bankacılık ve Dökümantasyon (PDF) şifrelemelerinde
yaygın olarak kullanılır.
[font=Roboto, sans-serif]Yazı editöründe SQL Injection filtrelemesi olduğu için tek tırnak ve çift tırnaklar filtreleniyor.[/font]
[font=Roboto, sans-serif]Bu nedenle kodlarda;
Çift tırnak yerine ----------> çift yıldız yıldız (**)[/font]
[font=Roboto, sans-serif]Tek tırnak yerine ----------> tek yıldız (*) kullanılmıştır.[/font]
VB.NET:
------------------------------------------------------------------------------
Public Shared Function textToRC4Kodla(ByVal orijinalText As String, ByVal karistirmaSifresi As String) As String
Dim i, j As Integer
Dim cryptText As New StringBuilder
Dim returnText As String
Dim sbox As Integer() = New Integer(256) {}
Dim key As Integer() = New Integer(256) {}
Dim karistiriciLength As Integer = karistirmaSifresi.Length
* Karıştırma şifresinin tüm karakterlerini
* ardışık olarak işleme sokarak key dizisinde
* byte karşılıklarını tutar.
*---------------------------------------------------
Dim a As Integer = 0
While a <= 255
Dim ctmp As Char = (karistirmaSifresi.Substring((a Mod karistiriciLength), 1).ToCharArray()(0))
key(a) = Asc(ctmp)
sbox(a) = a
Max(Interlocked.Increment(a), a - 1)
* Interlocked.Increment değeri a = a +1 yada a += 1 ile aynı işe yarar
* Arasındaki fark; multithreading olarak eğer devreye giren program parçası
* varsa a nın artışının birer birer artamasını garantiler...
End While
*---------------------------------------------------
* ASCII tablosuna göre;
* sbox dizisindeki ardışık şifreleme karakterine denk gelen liste,
* key dizisindeki byte karşılı ile toplanıp, 256 ile mod alınır ve
* böylelikle ASCII tablosundaki karşılığı bulunur.
*---------------------------------------------------
Dim x As Integer = 0
Dim b As Integer = 0
While b <= 255
x = (x + sbox(b) + key(b)) Mod 256
Dim tempSwap As Integer = sbox(b)
sbox(b) = sbox(x)
sbox(x) = tempSwap
Max(Interlocked.Increment(b), b - 1)
End While
*---------------------------------------------------
* Girilen metin uzunluğu kadar;
* sbox dizisindeki ardışık şifreleme karakterine denk gelen liste,
* key dizisindeki byte karşılı ile toplanıp, 256 ile mod alınır ve
* böylelikle ASCII tablosundaki karşılığı bulunur.
* Bulunan bu byte tablo değerinin kaydırma değerine (k) göre
* XOR değer alınır. Aslında bu bitsel çevirmedir.
* Mesela; 0 + 0 = 0, 1 + 1 = 0, 0 + 1 = 1, 1 + 0 = 1
* Bu kaydırılan değer cryptText string inde depolanır.
*---------------------------------------------------
a = 1
While a <= orijinalText.Length
Dim itmp As Integer = 0
i = (i + 1) Mod 256
j = (j + sbox(i)) Mod 256
itmp = sbox(i)
sbox(i) = sbox(j)
sbox(j) = itmp
Dim k As Integer = sbox((sbox(i) + sbox(j)) Mod 256)
Dim ctmp As Char = orijinalText.Substring(a - 1, 1).ToCharArray()(0)
itmp = Asc(ctmp)
Dim cryptByte As Integer = itmp Xor k
cryptText.Append(Chr(cryptByte))
Max(Interlocked.Increment(a), a - 1)
End While
*---------------------------------------------------
returnText = cryptText.ToString
cryptText.Length = 0
Return returnText
End Function
--------------------------------------------------------------------------------------
Önizleme:
![1.jpg](/proxy.php?image=https%3A%2F%2Fimage.ibb.co%2FjoEeh5%2F1.jpg&hash=7dca1e99200e0a9400d6cc2b23251c18)
VB.NET RC4 String Encode Kaynak Kod (Proje):
http://dosya.co/roxclxw075wi/RC4_String_Encode.rar.html
VB.NET RC4 String Encode Kaynak Kod Fare Hareketleriyle Rastgele Karıştırma(Proje):
[size=large]
![1.jpg](/proxy.php?image=https%3A%2F%2Fimage.ibb.co%2Fkd0MUk%2F1.jpg&hash=93bf5e2451b786101855d1fad11e3235)
[/size]
http://dosya.co/sh76sh5mmeer/RC4_String_Encode2.rar.html