İPUCU

Kriptografi - Şifreleme Şifreleme Ve Şifreleme Sistemleri Hakkında Her şey.

Seçenekler

AES Şifreleme ve Örnek // Ar-Ge Kulübü

21-07-2018 13:19
#1
Hichigo - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2015
Nereden:
~/
Mesajlar:
945
Teşekkür (Etti):
457
Teşekkür (Aldı):
387
Konular:
124
Ticaret:
(0) %
AES Şifreleme


AES(AdvancedEncryption Standard yani Gelişmiş Şifreleme Standartı) ABD Ulusal Standart ve Teknoloji Enstitüsü (NIST) tarafından 26 Kasım 2001 tarihinde US FIPS PUB 197 kodlu dokümanla duyurulmuştur. Standartlaştırma 5 yıl süren bir zaman zarfında tamamlanmıştır. Bu süreçte AES adayı olarak 15 tasarım sunulmuş, tasarımlar güvenlik ve performans açısından değerlendirildikten sonra en uygun tasarım standart şifreleme algoritması olarak seçilmiştir.



AES ile tanımlanan şifreleme algoritması, hem şifreleme hem de şifreli metni çözmede kullanılan anahtarların birbiriyle ilişkili olduğu, simetrik-anahtarlı bir algoritmadır. AES için şifreleme ve şifre çözme anahtarları aynıdır.



AES Algoritması

AES algoritmasında giriş, çıkış ve matrisler 128 bitliktir. Matris 4 satır, 4 sütun (4×4), 16 bölmeden oluşur. Bu matrise ‘durum’ denmektedir. Durumun her bölmesine bir baytlık veri düşer. Her satırda 32 bitlik bir kelimeyi meydana getirir.



AES algoritması, 128 bit veri bloklarını 128, 192 veya 256 bit anahtar seçenekleri ile şifreleyen bir blok şifre algoritmasıdır. Anahtar uzunluğu bit sayıları arasındaki farklılık AES tur döngülerinin sayısını değiştirmektedir.


Kod:
Tur Sayısının Anahtar Uzunluğuna Göre Değişimi
AES-128 => Kelime Uzunluğu: 4 => Tur Sayısı 10
AES-192 => Kelime Uzunluğu: 6 => Tur Sayısı 12
AES-256 => Kelime Uzunluğu: 8 => Tur Sayısı 14
Şifreli Metin Oluşumu



Girişten gelen metin 128 bitlik parçalara bölünür. Her parça durum matrisine yerleştirilir. Durum matrisi oluşturulduktan sonra, artık üzerinde tüm işlemler yapılabilir duruma gelmiş demektir. Aynı şekilde önceden alınan 128 bitlik anahtarda bu durum matrisi halinde işlem görür. Giriş metninin yazıldığı durum matrisi ilk olarak anahtar ile toplanır.






Ardından algoritmanın temeli sayılabilecek bir tur işlemine tabi tutulur. Bu tur işleminin içeriği sıradaki başlıklardır. Detaylarına inmeyeceğim internetten araştırabilirsiniz.


Kod:
İşlemler
1- Byte Değiştirme(Sub Bytes)
2- Satır Kaydırma(Shift Rows)
3-Stun Karıştırma(Mix Column)
Python İle Örneklendirme


Kod:
from hashlib import md5
from base64 import b64decode
from base64 import b64encode
from Crypto.Cipher import AES

BLOCK_SIZE = 16
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * \
                chr(BLOCK_SIZE - len(s) % BLOCK_SIZE)
unpad = lambda s: s[:-ord(s[len(s) - 1:])]


def Encrypt(password,string):
    password = md5(password.encode('utf8')).hexdigest()
    string = pad(string)
    iv = Random.new().read(AES.block_size)
    cipher = AES.new(password, AES.MODE_CBC, iv)
    return b64encode(iv + cipher.encrypt(string))

def Decrypt(password,string):
    password = md5(password.encode('utf8')).hexdigest()
    string = b64decode(string)
    iv = string[:16]
    cipher = AES.new(password, AES.MODE_CBC, iv)
    return unpad(cipher.decrypt(string[16:])).decode('utf8')

msg = Encrypt("BuCokGizliBirSifre","Selam")
print(msg)
msg2 = Decrypt("BuCokGizliBirSifre",msg)
print(msg2)


Kullanıcı İmzası
Konu Hichigo tarafından (21-07-2018 13:21 Saat 13:21 ) değiştirilmiştir.


Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı