Intro
In this study, probability of breaking password combinations with the function I created using R programming language was calculated by considering different dimensions. The different dimensions considered are:
- How much does number of digits in the password combination affect probability of cracking?
- How much do characters in the language used in the password combination affect the probability of cracking?
- How does repetitive and non-repeatable password combination affect probability of cracking?
- How much does the number, letter or both (alphanumeric) used in the password combination affect probability of cracking?
- How much do the symbols and lowercase letters used in password combination affect probability of cracking?
Giriş
Şifreler artık günlük hayatımınızın bir parçası olmuştur. Anlaşılan o ki bulut bilişim ve artan dijital dönüşüm sayesinde hayatımızın daha da içerisine girmeye devam edecektir. Ancak artan dijitalleşme siber güvenlik endişelerini de beraberinde getirmeye devam etmektedir. Hemen hemen hepimizin uygulamalar kullanırken birden fazla şifre kullanırız. Şifre belirlerken bir kısmımız kolay hatırlansın diye düşük güvenlikli şifreler belirlediği görülmektedir. Bazıları ise harf, rakam ve noktalama işaretlerini kullanarak yüksek güvenlikli şifre kombinasyonları oluşturduğunu görmekteyiz.
Burada temel soru şu; esasen kaçımız oluşturduğumuz şifre kombinasyonlarının kırılma olasılığını biliyor? Cevabınızı duyar gibiyim :); muhtemelen çok çok azımız. Belki de sadece bu işin içinde yer alanlar… Şifre kombinasyonların kırılma olasılığını bilmek bizlere daha güçlü şifre belirleme olanağı sunar. Bu nedenle bu çalışmanın temel motivasyonudur.
Bu çalışmada R programlama dili kullanarak oluşturduğum fonksiyonla şifre kombinasyonlarının kırılma olasılığı farklı boyutları ele alınarak hesaplanmıştır. Ele alınan farklı boyutlar şunlardır.
- Şifre kombinasyonundaki hane sayısı kırılma olasılığını ne kadar etkiliyor?
- Şifre kombinasyonunda kullanılan dildeki karakterler kırılma olasılığını ne kadar etkiliyor?
- Şifre kombinasyonunun tekrarlı ve tekrarsız olması kırılma olasılığını ne kadar etkiliyor?
- Şifre kombinasyonunda kullanılan rakam, harf veya her ikisi (alfanumerik) kırılma olasılığını ne kadar etkiliyor?
- Şifre kombinasyonunda kullanılan semboller ve küçük harfler kırılma olasılığını ne kadar etkiliyor?
Kütüphaneler
kütüphane<-c("dplyr","tibble","tidyr","readxl", "writexl", "kableExtra", "report", "citation", "rmarkdown")
yükle<-sapply(kütüphane, require, character.only = TRUE, warn.conflicts = FALSE)
#Kütüphane yüklenme durumunu gösteren tablo
tibble(Sıra=1:length(kütüphane), Kütüphane=names(yükle), Durumu=as.logical(yükle)) %>% mutate(Durumu=if_else(Durumu==TRUE, "Yüklendi", "Paket Kurulumu Gerekli")) %>%
kable(caption = htmltools::tags$caption(
style = 'caption-side: top; text-align: center;background-color: #0077b5;color:white;font-family: arial; font-size: 20px;font-weight: bold;border: 3px solid #0e76a8;box-shadow: 10px 10px 20px grey',"Yüklenen Kütüphanelerin Listesi")) %>%
kable_styling(bootstrap_options = c("striped", "hover"),font_size = 16) %>% row_spec(0, bold = T, color = "black")
Basit Fonksiyon
Aşağıdaki şifre kombinasyonlarının sayısının hesaplanmasında yazılan fonksiyonlarda genel olarak üretilen şifre permütasyon sayısının çarpmaya göre tersi (1/permütasyon sayısı) alındığında oluşturulan şifrenin kırılma olasılığını hesaplamış oluruz. Temel olarak yapılan hesaplamalarda permütasyon kullanılmıştır. Bunun nedeni, şifre kombinasyonlarında sıra düzenin önemli olmasıdır.
Aşağıda yazılan basit kirilma_olasiliği() fonksiyonunda default olarak function(permütasyon=“tekrarlı”, hane=6) şeklinde tanımlanmıştır. Fonksiyonda permütasyon=“tekrarlı” veya permütasyon=“tekrarsız”, ve hane=45 veya hane’yi istediğiniz basamak olarak belirleyebiliriz. Fonksiyonda bunu tamamen kullanıcıya esneklik sağlasın diye bu şekilde belirleyerek farklı kombinasyonlarda olasılıkların nasıl değiştiği görülsün istedim.
options(scipen = 999)
basit_kirilma_olasiliği=function(permütasyon="tekrarlı", hane=6){
rakam <- 0:9
if(permütasyon=="tekrarsız"){
sonuc=format(factorial(length(rakam))/factorial(length(rakam)-hane), big.mark=".")
return(paste(permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
} else if(permütasyon=="tekrarlı"){
sonuc=format(length(rakam)^hane, big.mark=".")
return(paste(permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
}
}
# Üretilecek şifre kombinasyonunda kaç haneli olacağını, tekrarlı kombinasyonla mı tekrarsız kombinasyonla mı oluşturulacağını fonksiyon içerisinde tanımlayınız.
basit_kirilma_olasiliği(permütasyon="tekrarlı", hane=10)
Uygulama 1: Tekrarlı Permütasyon
Bu kısımda oluşturulan fonksiyonla rakamlara dayalı 10 haneli tekrarlı şifre permütasyon sayısı hesaplanmıştır.
basit_kirilma_olasiliği(permütasyon="tekrarlı", hane=10)
## [1] "tekrarlı permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=10.000.000.000. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 10.000.000.000'da 1'dir."
Uygulama 2: Tekrarsız Permütasyon
Bu kısımda oluşturulan fonksiyonla rakamlara dayalı 10 haneli tekrarsız şifre permütasyon sayısı hesaplanmıştır.
basit_kirilma_olasiliği(permütasyon="tekrarsız", hane=10)
## [1] "tekrarsız permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=3.628.800. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 3.628.800'da 1'dir."
Fonksiyon I
Aşağıda kirilma_olasiliği() fonksiyonu default olarak function(permütasyon=“tekrarlı”, dili=“İngilizce”, hane=6) şeklinde tanımlanmıştır. Fonksiyonda permütasyon=“tekrarlı” veya permütasyon=“tekrarsız”, dili=“Türkçe” veya *dili=“İngilizce” ve hane=45 veya hane**’yi istediğiniz basamak olarak belirleyebiliriz. Fonksiyonda bunu tamamen kullanıcıya esneklik sağlasın diye bu şekilde belirleyerek farklı kombinasyonlarda olasılıkların nasıl değiştiği görülsün istedim.
options(scipen = 999)
kirilma_olasiliği=function(permütasyon="tekrarlı", dili="İngilizce", hane=6){
rakam <- 0:9
HARF <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")
tr <- c(rakam, HARF)
ing<-c(rakam, LETTERS)
if(permütasyon=="tekrarlı" && dili=="Türkçe"){
sonuc=format(length(tr)^hane, big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
} else if(permütasyon=="tekrarsız" && dili=="Türkçe"){
sonuc=format(factorial(length(tr))/factorial(length(tr)-hane), big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
} else if(permütasyon=="tekrarlı" && dili=="İngilizce"){
sonuc=format(length(ing)^hane, big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
} else if(permütasyon=="tekrarsız" && dili=="İngilizce"){
sonuc=format(factorial(length(ing))/factorial(length(ing)-hane), big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
}
}
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını kirilma_olasiliği() fonksiyonu içerisinde tanımlayınız.
kirilma_olasiliği(permütasyon="tekrarlı", hane=10, dili="Türkçe")
Uygulama 1: Türkçe Tekrarlı Permütasyon
Bu kısımda oluşturulan fonksiyonla Türkçe dilinde 10 haneli tekrarlı şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını kirilma_olasiliği() fonksiyonu içerisinde tanımlayınız.
kirilma_olasiliği(permütasyon="tekrarlı", hane=10, dili="Türkçe")
## [1] "Türkçe dilinde tekrarlı permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=8.140.406.085.191.601. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 8.140.406.085.191.601'da 1'dir."
Uygulama 2: Türkçe Tekrarsız Permütasyon
Bu kısımda oluşturulan fonksiyonla Türkçe dilinde 10 haneli tekrarsız şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını kirilma_olasiliği() fonksiyonu içerisinde tanımlayınız.
kirilma_olasiliği(permütasyon="tekrarsız", hane=10, dili="Türkçe")
## [1] "Türkçe dilinde tekrarsız permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=2.306.992.893.004.800. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 2.306.992.893.004.800'da 1'dir."
Uygulama 3: İngilizce Tekrarlı Permütasyon
Bu kısımda oluşturulan fonksiyonla İngilizce dilinde 10 haneli tekrarlı şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını kirilma_olasiliği() fonksiyonu içerisinde tanımlayınız.
kirilma_olasiliği(permütasyon="tekrarlı", hane=10, dili="İngilizce")
## [1] "İngilizce dilinde tekrarlı permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=3.656.158.440.062.976. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 3.656.158.440.062.976'da 1'dir."
Uygulama 4: İngilizce Tekrarsız Permütasyon
Bu kısımda oluşturulan fonksiyonla İngilizce dilinde 10 haneli tekrarsız şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını kirilma_olasiliği() fonksiyonu içerisinde tanımlayınız.
kirilma_olasiliği(permütasyon="tekrarsız", hane=10, dili="İngilizce")
## [1] "İngilizce dilinde tekrarsız permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=922.393.263.052.800. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 922.393.263.052.800'da 1'dir."
Fonksiyon II
Bir önceki fonksiyondan farklı olarak burada fonksiyona hem İngilizce hem de Türkçe karakterlerin küçük harfle yazılışları da dahil edilmiştir. Bunun yapılmasının nedeni, bir önceki fonksiyonla karşılaştırma yapabilmenizdir.
options(scipen = 999)
kirilma_olasiliği_kh=function(permütasyon="tekrarlı", dili="İngilizce", hane=6){
rakam <- 0:9
HARF <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")
tr <- c(rakam, HARF, tolower(HARF))#ilave olarak küçük harfler de eklenmiştir.
ing<-c(rakam, LETTERS, letters)#ilave olarak küçük harfler de eklenmiştir.
if(permütasyon=="tekrarlı" && dili=="Türkçe"){
sonuc=format(length(tr)^hane, big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
} else if(permütasyon=="tekrarsız" && dili=="Türkçe"){
sonuc=format(factorial(length(tr))/factorial(length(tr)-hane), big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
} else if(permütasyon=="tekrarlı" && dili=="İngilizce"){
sonuc=format(length(ing)^hane, big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
} else if(permütasyon=="tekrarsız" && dili=="İngilizce"){
sonuc=format(factorial(length(ing))/factorial(length(ing)-hane), big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
}
}
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını kirilma_olasiliği() fonksiyonu içerisinde tanımlayınız.
kirilma_olasiliği_kh(permütasyon="tekrarlı", hane=10, dili="Türkçe")
Uygulama 1: Türkçe Tekrarlı Permütasyon
Bu kısımda oluşturulan fonksiyonla Türkçe dilinde 10 haneli tekrarlı şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını fonksiyon içerisinde tanımlayınız.
kirilma_olasiliği_kh(permütasyon="tekrarlı", hane=10, dili="Türkçe")
## [1] "Türkçe dilinde tekrarlı permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=2.113.922.820.157.210.624. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 2.113.922.820.157.210.624'da 1'dir."
Uygulama 2: Türkçe Tekrarsız Permütasyon
Bu kısımda oluşturulan fonksiyonla Türkçe dilinde 10 haneli tekrarsız şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını fonksiyon içerisinde tanımlayınız.
kirilma_olasiliği_kh(permütasyon="tekrarsız", hane=10, dili="Türkçe")
## [1] "Türkçe dilinde tekrarsız permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=1.055.082.251.814.008.960. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 1.055.082.251.814.008.960'da 1'dir."
Uygulama 3: İngilizce Tekrarlı Permütasyon
Bu kısımda oluşturulan fonksiyonla İngilizce dilinde 10 haneli tekrarlı şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını fonksiyon içerisinde tanımlayınız.
kirilma_olasiliği_kh(permütasyon="tekrarlı", hane=10, dili="İngilizce")
## [1] "İngilizce dilinde tekrarlı permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=839.299.365.868.340.224. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 839.299.365.868.340.224'da 1'dir."
Uygulama 4: İngilizce Tekrarsız Permütasyon
Bu kısımda oluşturulan fonksiyonla İngilizce dilinde 10 haneli tekrarsız şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını fonksiyon içerisinde tanımlayınız.
kirilma_olasiliği_kh(permütasyon="tekrarsız", hane=10, dili="İngilizce")
## [1] "İngilizce dilinde tekrarsız permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=390.164.706.723.041.920. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 390.164.706.723.041.920'da 1'dir."
Fonksiyon III
Önceki fonksiyondan farklı olarak burada fonksiyona semboller de dahil edilmiştir. Bunun yapılmasının nedeni, önceki fonskiyonlarla karşılaştırma yapabilmenizdir.
options(scipen = 999)
kirilma_olasiliği_tum=function(permütasyon="tekrarlı", dili="İngilizce", hane=6){
rakam <- 0:9
HARF <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")
ni=c("!", "#", "$", "%", "&", "(", ")", "*", "+", "-", "/", ":", ";", "<", "=", ">", "?", "@", "[", "^", "_", "{", "|", "}", "~")
tr <- c(rakam, HARF, tolower(HARF), ni)#ilave olarak küçük harfler de eklenmiştir.
ing<-c(rakam, LETTERS, letters, ni)#ilave olarak küçük harfler de eklenmiştir.
if(permütasyon=="tekrarlı" && dili=="Türkçe"){
sonuc=format(length(tr)^hane, big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
} else if(permütasyon=="tekrarsız" && dili=="Türkçe"){
sonuc=format(factorial(length(tr))/factorial(length(tr)-hane), big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
} else if(permütasyon=="tekrarlı" && dili=="İngilizce"){
sonuc=format(length(ing)^hane, big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
} else if(permütasyon=="tekrarsız" && dili=="İngilizce"){
sonuc=format(factorial(length(ing))/factorial(length(ing)-hane), big.mark=".")
return(paste(dili, " dilinde ", permütasyon, " permütasyon ile üretilen ",hane, " haneli şifre kombinasyon sayısı=", sonuc, ". Diğer bir ifadeyle, ", hane," haneli bu şifre kombinasyonunun kırılma olasılığı, ", sonuc, "'da 1'dir.", sep=""))
}
}
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını fonksiyon içerisinde tanımlayınız.
kirilma_olasiliği_tum(permütasyon="tekrarlı", hane=10, dili="Türkçe")
Uygulama 1: Türkçe Tekrarlı Permütasyon
Bu kısımda oluşturulan fonksiyonla Türkçe dilinde 10 haneli tekrarlı şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını fonksiyon içerisinde tanımlayınız.
kirilma_olasiliği_tum(permütasyon="tekrarlı", hane=10, dili="Türkçe")
## [1] "Türkçe dilinde tekrarlı permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=48.398.230.717.929.316.352. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 48.398.230.717.929.316.352'da 1'dir."
Uygulama 2: Türkçe Tekrarsız Permütasyon
Bu kısımda oluşturulan fonksiyonla Türkçe dilinde 10 haneli tekrarsız şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını fonksiyon içerisinde tanımlayınız.
kirilma_olasiliği_tum(permütasyon="tekrarsız", hane=10, dili="Türkçe")
## [1] "Türkçe dilinde tekrarsız permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=29.318.602.952.589.398.016. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 29.318.602.952.589.398.016'da 1'dir."
Uygulama 3: İngilizce Tekrarlı Permütasyon
Bu kısımda oluşturulan fonksiyonla İngilizce dilinde 10 haneli tekrarlı şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını fonksiyon içerisinde tanımlayınız.
kirilma_olasiliği_tum(permütasyon="tekrarlı", hane=10, dili="İngilizce")
## [1] "İngilizce dilinde tekrarlı permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=24.842.341.419.143.569.408. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 24.842.341.419.143.569.408'da 1'dir."
Uygulama 4: İngilizce Tekrarsız Permütasyon
Bu kısımda oluşturulan fonksiyonla İngilizce dilinde 10 haneli tekrarsız şifre kombinasyon sayısı hesaplanmıştır.
# Üretilecek şifre kombinasyonunda kullanılacak dili, kaç haneli olacağını, tekrarlı permütasyonla mı tekrarsız permütasyonla mı oluşturulacağını fonksiyon içerisinde tanımlayınız.
kirilma_olasiliği_tum(permütasyon="tekrarsız", hane=10, dili="İngilizce")
## [1] "İngilizce dilinde tekrarsız permütasyon ile üretilen 10 haneli şifre kombinasyon sayısı=14.517.925.392.916.006.912. Diğer bir ifadeyle, 10 haneli bu şifre kombinasyonunun kırılma olasılığı, 14.517.925.392.916.006.912'da 1'dir."
Sonuç
Özetle, yapılan çalışmayla İngilizce ve Türkçe karakterlerinin yanında rakamlar ve semboller de dahil edilerek üretilen şifre kombinasyonlarının sayısı ve bu kombinasyon sayılarından yola çıkılarak şifrelerin kırılma olasılıkları hesaplanarak konu alanında farkındalık oluşturulması amaçlanmıştır.
Çalışmanın tamamını RPubs üzerinde de yayınladım. İlgilenenler için linki: https://rpubs.com/tevfik1461/cracking
Faydalı olması dileğiyle.
Bilimle ve teknolojiyle kalınız.
Not:
- Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.
- It can not be cited or copied without referencing.
Kaynakça
- Hadley Wickham (2021). tidyr: Tidy Messy Data. R package version 1.1.3. https://CRAN.R-project.org/package=tidyr
- Hadley Wickham and Jennifer Bryan (2019). readxl: Read Excel Files. R package version 1.3.1. https://CRAN.R-project.org/package=readxl
- Hadley Wickham, Romain François, Lionel Henry and Kirill Müller (2021). dplyr: A Grammar of Data Manipulation. R package version 1.0.7. https://CRAN.R-project.org/package=dplyr
- Hao Zhu (2021). kableExtra: Construct Complex Table with ‘kable’ and Pipe Syntax. R package version 1.3.4. https://CRAN.R-project.org/package=kableExtra
- Jeroen Ooms (2021). writexl: Export Data Frames to Excel ‘xlsx’ Format. R package version 1.4.0. https://CRAN.R-project.org/package=writexl
- JJ Allaire and Yihui Xie and Jonathan McPherson and Javier Luraschi and Kevin Ushey and Aron Atkins and Hadley Wickham and Joe Cheng and Winston Chang and Richard Iannone (2021). rmarkdown: Dynamic Documents for R. R package version 2.10. URL https://rmarkdown.rstudio.com.
- Kirill Müller and Hadley Wickham (2021). tibble: Simple Data Frames. R package version 3.1.3. https://CRAN.R-project.org/package=tibble
- Makowski, D., Ben-Shachar, M.S., Patil, I. & Lüdecke, D. (2020). Automated Results Reporting as a Practical Tool to Improve Reproducibility and Methodological Best Practices Adoption. CRAN. Available from https://github.com/easystats/report
- R Core Team (2021). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.R-project.org/.