Android Kotlin ile Veri Şifreleme ve Güvenlik
Günümüz dijital çağında, kişisel gizlilik ve veri güvenliği giderek daha fazla önem kazanıyor. Her geçen gün, internet üzerinden iletilen ve saklanan hassas bilgilerin gizliliği tehdit altında. Veri güvenliği, sadece bireysel kullanıcılar için değil, aynı zamanda şirketler, kurumlar ve hükümetler için de kritik bir öneme sahiptir. Bu noktada, veri şifreleme, bilgi güvenliği alanında temel bir rol oynamaktadır. Veri şifreleme, bilgileri okunamaz hale getirerek, yetkisiz erişim ve kötü niyetli saldırılara karşı koruma sağlar.
Bu yazıda, sizlere Android uygulamalar geliştirirken verilerimizi nasıl şifreleriz ve şifrelenmiş verilerimizi nasıl şifresinin çözüldüğünü anlatacağım.
Öncelikle hangi şifreleme methodunu kullandığımızı ve ne işe yaradığı anlatmak istiyorum.
AES (Advanced Encryption Standard)
Simetrik anahtarlı bir şifreleme algoritmasıdır. AES, bir metni veya veriyi şifrelemek için aynı anahtarın hem şifreleme hem de şifre çözme işlemlerinde kullanıldığı simetrik bir şifreleme algoritmasıdır. AES, şifreleme işlemini birkaç turda gerçekleştirir. 128-bit anahtar uzunluğuna sahip AES için 10 tur, 192-bit anahtar uzunluğuna sahip AES için 12 tur, ve 256-bit anahtar uzunluğuna sahip AES için 14 tur kullanılır. Biz bu yazımızda 256-bit kullanacağız. Hadi gelin birlikte EncryptionManager adında bir sınıf oluşturalım ve kodlamaya başlayalım.
Şimdi ise sırasıyla sınıfımızın fonksiyonlarını tamamlayalım.
- encryptText() fonksiyonumuz 2 parametre almaktadır ve bunun sonucunda String değeri döndürmektedir. İlk olarak AES için (import javax.crypto.Cipher) kütüphanesini kullanarak bir cipher oluşturduk ve ENCYPT_MODE kullanarak cipher değerini başlatmış olduk. (import java.util.Base64) kütüphanesini kullanarak return etmesi gereken String değeri Base64 kullanarak elde etmiş olduk. Burada return edilen değer şifrelenmiş verinin kendisidir.
- decryptText() fonksiyonu da aynı şekilde 2 parametre almakta ve String döndürmektedir. Bir önceki fonksiyonumuzda olduğu gibi cipher değişkenini başlattık. Bu sefer şifreleme modu yerine şifre çözme modu olan DECRYPT_MODE kullandık. SecretKey ile oluşturulan anahtarı bir sonraki fonksiyonda anlatacağım ama burada ne işe yaradığından bahsetmek istiyorum. 256-bit kullanarak Şifreleme yapacağımızı söylemiştik. SecretKey ise bize 256-bitlik bir anahtar oluşturmaktadır. Bu anahtar hem şifreleme hem de şifre çözmek için kullanmamız gerekiyor ve sonucunda metnimizi döndürüyoruz.
- Secret key oluşturduğumuz fonksiyonumuz yukarıdaki gibidir.
(import javax.crypto.KeyGenerator
import javax.crypto.SecretKey
import javax.crypto.spec.SecretKeySpec)
kütüphanelerini kullanarak bu özellikleri kullanmamıza olanak sağladık. KeygenGenerator bizim kullanmak istediğimiz şifreleme yöntemini belirlememizde olanak tanır. 256-bit bir secret key için 256 ile değişkenimizi başlatıp daha sonra onu döndürmeliyiz. Fonksiyonlarımızı tanımladığımıza göre hadi gelin bu sınıfı nasıl kullanacağımızı öğrenelim.
- İlk olarak yazdığımız sınıftan encryptionManager adında bir obje oluşturalım. Daha sonrasında Şifreleme için kullanılacak anahtarımızı yani secretKey değişkenimizi tanımlayalım. Artık tek yapmamız gereken şifrelenmesini istediğimiz metni encryptText() fonksiyonuna secretKey ile birlikte verip şifrelenmiş metni bir değişkene atamak.
Şifreli metin: v75Wt+IbV3oj0pBOG5a4I6YApT7g0x8e1tq26ZzO9oo=
Ekrana yazdırdığımızda buna benzer bir şifrelenmiş metin ile karşılaşırız. Aynı secretKey kullanarak bu işlemin tersini yaparak şifreli metni çözebiliriz.
Yorum yapılmamış