Anti-armenia.ORG - Forumlar - BASE64 encoding and decoding



Istifadəçi
    2023-03-05 18:59 GMT                 

thealekberli



İstifadəçi
Mesaj Sayı : 2
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   0  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər :
Ölkə :
Məslək : Cyber Attacker
Yaş :
Mesaj :

Mövzunu Paylaş!


ASCII

Yəqin ki, hamımız ASCII table haqqında eşitmişik. Eşitməyənlər üçün qısaca izah edəsi olsaq:
Hər bir simvolu ədədlərlə ifadə etmək üçün kompüter elmində istifadə olunan cədvəllərdən biridir. Açılışı "American Standard Code for Information Interchange" (İnformasiya Mübadiləsi üçün Amerika Standart Kodu) olaraq bilinir.

https://theasciicode.com.ar/american-standard-code-information-interchange/ascii-codes-table.png


ASCII table 2^8=256 sayda simvoldan ibarətdir. Hər bir simvolun 0-255 aralığında onluq say sistemində qarşılığı olur. 255 ədədini onluq say sistemindən ikilik say sisteminə çevirək. (255)=(11111111). Buradan aydındır ki, hər bir simvol 8 bit həcmindədir.
İndi isə BASE64 şifrələmə haqqında danışaq.
BASE64 encoding və decoding prosesi necə gedir?
Fərz edək ki, bizə bir simvol verilib və biz onu BASE64 encoding etmək istəyirik. Həmin simvol "A" olsun. ASCII Table-yə baxsaq görərik ki, "A" simvolunun qarşılığı 65 ədədidir. İlk öncə 65 ədədinin ikilik say sistemində olan qarşılığını tapaq. (65)=(1000001)
Diqqət etməliyik ki, onluq say sistemində olan bir ədədin ikilik say sistemi qarşılığını taparkən 8 bit yəni 8 simvoldan ibarət olsun. Əgər ikilik say sistemində olan qarşılığı taparkən əldə etdiyimiz ədəd 8 simvoldan aşağı olarsa, onu 8 simvola tamamlamaq üçün qarşısına (sağ hissəsinə) 0 ədədləri yazırıq. Ona görə də 65 ədədinin binary qarşılığı olaraq 01000001 əldə edəcəyik.

BASE64

Adından da göründüyü kimi ASCII Table-dan fərqli olaraq BASE64 Table 2^6=64 simvoldan ibarətdir.

https://www.golinuxcloud.com/wp-content/uploads/base64-indexing-table.png


İngilis əlifbasında 26 hərf mövcuddur. Həm böyük, həm kiçik həfləri nəzərə alsaq 52 sayda hərf əldə edərik. Bu siyahıya 10 sayda rəqəm əlavə etsək 62 simvol, "+" və "/" simvollarını da əlavə etsək 64 sayda simvol olar. Burada simvolların 0-63 aralığında onluq say sistemində qarşılığı olur. (63)=(111111). Buradan aydındır ki, BASE64-də hər bir simvol 6 bit həcmindədir. İndi isə BASE64 Encoding edək.
1) BASE64 6 bit olduğundan, simvolumuzun ASCII ikilik say sistemi qarşılığını 6 bit'lərə bölək:
"010000 01". Biz burada 8 biti 6+2 bit olaraq böldük. Bitlərimizin ümumi sayının 6-ya tam bölünməsi üçün özümüzdən 4 bit əlavə edək. Əlavə etdiyimiz hər bir bit "0" olmalıdır.
"010000 010000".
2) Əldə etdiymiz ikilik say sistemi ədədləri onluq say sisteminə çevirək. (010000)=(16), (010000)=(16). Deməli birinci simvolumuz 16, digər simvolumuz da 16 ədədinə qarşılıq gəlməlidir. BASE64 table-yə baxanda 16 ədədinin qarşılığının "Q" simvolu olduğunu görürük. Hər iki simvolumuzun onluq say sitemində qarşılığı 16 ədədi olduğundan "QQ" əldə etmək olarıq.
3) Simvolların sayının 6-nın qatı olması üçün biz özümüzdən 4 ədəd "0" simvolu əlavə etmişdik. 4 ədədini 2-yə bölək, 4:2=2. Deməli əldə etdiymiz şifrənin sonuna 2 ədəd "=" simvolu yazmalıyıq. Ən son nəticə olaraq "QQ==" əldə etmiş olduq. Bununla da "A" simvolunu BASE64 encoding etdikdə "QQ==" əldə edəcəyimiz öyrənmiş olduq.
Note: 8 və 6 ədədlərinin ƏBOBU 2 olduğu üçün biz ən sonda 4 ədədini 2-yə böldük.
BASE64 Decoding
BASE64 decoding etmək istəsək bütün bu prosesləri tərs olaraq etməliyik. Məsələn "Y3liM3I=" verilmiş olsun. Verilmiş simvolları BASE64 Table-yə nəzərən onluq say sistemində qarşılığını tapıb onların hər birini 2-lik say sisteminə çevirək. 011000 110111 100101 100010 001100 110111 001000.
Görürük ki, bizə verilmiş şifrələnmiş sözün sonunda "=" işarəsi var. Bayaq etdiyimizin tam tərsi olarq "=" işarələrinin sayını 2-yə vurub, həmin qədər "0" simvolunu sağdan başlayaraq siləcəyik. 011000 110111 100101 100010 001100 110111 0010. İndi isə əldə etdiyimiz 6 bitlərdən ibarət olan son nəticəni birləşdirib 8 bitlik hissələrə bölək.
01100011 01111001 01100010 00110011 01110010. İndi isə bunların hər birini onluq say sisteminə çevirsək: 99, 121, 98, 51, 114 ədədləri əldə etmiş olarıq. Bu ədədlərin ASCII cədvəlində olan simvol qarşılığına baxaq.
( 99 ) = "c"
( 121 ) = "y"
( 98 ) = "b"
( 51 ) = "3"
( 114 ) = "r"
Deməli "Y3liM3I=" şifrəsini BASE64 Decoding etdiyimiz zaman "cyb3r" əldə etmiş olduq.
ENCODING AND DECOING IN KALI LINUX
Kali Linux əməliyyat sistemində "cyb3r" sözünü BASE64 encoding etmək istəsək:
$ echo "cyb3r" | base64
Əmrini icra edə bilərik.
Bizə verilmiş "Y3liM3I=" sözünü BASE64 decoding etmək istəsək:
$ echo "Y3liM3I=" | base64 -d
Əmrini icra edə bilərik.
Son olaraq demək istərdim ki, BASE64 qədər geniş istifadə olunmasa belə BASE32, BASE16 və s. ilə qarşılaşa bilərsiniz. Məntiqi olaraq encoding və decoding prosesləri eyni olur. Maraq dairəsində onların da Table-larına internetdən araşdıraraq baxa bilərsiniz.

Anti-armenia.ORG
    

Istifadəçi
    2023-03-07 09:41 GMT                 

AzTeaM



İstifadəçi
Mesaj Sayı : 21
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   1  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : BAKU
Ölkə :
Məslək : Web Programmer !
Yaş : 26
Mesaj :

Mövzunu Paylaş!


Təşəkkür edirəm

Code is Poetry !
Anti-armenia.ORG