Alqoritm

Jasypt ilə məlumatların encrypt və decrypt edilməsi

jasypt-encrypt-decrypt
Written by Mushfiq Mammadov

Java`da məlumatların encrypt və decrypt edilməsi üçün istifadəsi çox sadə və rahat olan kitabxanalardan biri Jasypt kitabxanasıdır. Bu kitabxana vasitəsilə çox sadə şəkildə öz şəxsi “açar”ınız ilə məlumatları encrypt edə və həmin açar vasitəsi ilə də encrypt edilmiş məlumatı decrypt edə bilərsiniz.

Kitabxananı maven proyektə əlavə etmək üçün:

Kod nümunəsi:

 

Output:

 

Bəs bunu praktikada necə istifadə etmək olar?

Yerindən asılı olaraq bu şifrələmənin fərqli cür tətbiqləri ola bilər, amma burada müşahidəmdən bir nüansı qeyd edəcəm. Qısa bir müddət öncə bir məsələni araşdırarkən Google play store`da qarşıma bir application çıxdı, mənim araşdırdığım məsələ ilə əlaqədar deyildi, amma diqqətimi çəkdi yüklədim yoxladım. Deməli bu app telefonunuzda olan digər android app`ları decompile edir və source kodlarını sizə göstərir (pis yaxud yaxşı orasını deyə bilmərəm).

Adını qeyd etməyəcəm, telefonumda bir mobil application var idi, bir neçə ay öncə onun istifadə etdiyi servis mənə lazım idi, bir alqoritmi test etmək üçün. Maraq üçün həmin application-u bu proqram vasitəsilə decompile etdim və source kodlarına baxmağa başladım. Bir neçə dəqiqədən sonra servisin url-ini kodların içindən tapdım. Url-i yoxladım, çox gözəl şəkildə işləyirdi 🙂 Amma istifadə etmədim, çünki bilirəm adamlar o servisi yazmaq üçün nə qədər əziyyət çəkiblər. Və bunu şəxsi məqsədləri üçün ediblər, API public deyil, onu istifadə etmək yaxud yaymaq ədalətli olmaz. Etiraf edək ki, bəlkə də çoxlarımız mobil app-ın daxilində istifadə edəcəyimiz servisin url-ini aşkar şəkildə qeyd edirik. Mənim özüm də bunu bir dəfə etmişəm, ona görə kiminsə də bunu edəcəyini güman edib maraq üçün yoxlamağa başlamışdım 😀

 

Yəqin bu boşluğu aradan qaldırmaq üçün də yöntəmlər var, mobil developerlər daha yaxşı bilər. Amma Jasypt kitabxanasını görəndə ağlıma sadə bir fikir gəldi: veb servisin verdiyi jsonu şifrələyib göndərmək və klient tərəfdə də eyni açar söz ilə deşifrə edib sonra parse etmək. Belə olan halda public olmayan servisin birbaşa istifadəsinin qarşısını almaq, başqa sözlə əlçatanlığını daha çətinləşdirmək olar. Düzdü bunun dezavantajları da çox ola bilər; deşifrələmə üçün əlavə vaxt itkisi, androidin Jasypt-ni dəstəkləyib dəstəkləməməsi, şifrələmə üçün istifadə olunan açar sözün əldə edilməsi ilə şifrələnmiş jsonun deşifrə edilə bilinməsi və s.

Dərinə getdikdə daha çox mətləblər ortaya çıxır, ona görə də çox dərinə getməyəcəm. Sadəcə bu bir fikir olaraq ağlıma gəldi və kodlaşdırılması sadə olduğundan bir nümunə götürüb yüngül cızma-qara edib əlavə etdim bloga. Nə vaxtsa bu məsələ aktual olsa yenidən qayıdıb daha əhatəli şəkildə baxmaq olar.

 

Servis nümunəsi:

Controller.java

 

Currency.java

 

Rate.java

 

Client nümunəsi :
 

Output:

İstifadə edilən kodların github linkləri:

Mövzu ilə əlaqəli digər linklər:

 

About the author

Mushfiq Mammadov

Leave a Comment

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.