מבוא ליאסיפט

1. סקירה כללית

במאמר זה נבחן את ה- יאסיפט (Java Simplified Encryption) ספרייה.

Jasypt היא ספריית Java המאפשרת למפתחים להוסיף יכולות הצפנה בסיסיות לפרויקטים במינימום מאמץ, וללא צורך בידע מעמיק אודות פרטי הטמעה של פרוטוקולי הצפנה.

2. שימוש בהצפנה פשוטה

שקול שאנו בונים יישום אינטרנט שבו המשתמש מגיש חשבון פרטי לחשבון. עלינו לאחסן נתונים אלה במסד הנתונים, אך יהיה זה לא בטוח לאחסן טקסט רגיל.

אחת הדרכים להתמודד איתו היא לאחסן נתונים מוצפנים במסד הנתונים, וכאשר מאחזרים נתונים עבור משתמש מסוים מפענחים אותם.

כדי לבצע הצפנה ופענוח באמצעות אלגוריתם פשוט מאוד, אנו יכולים להשתמש ב- BasicTextEncryptor שיעור מספריית יאסיפט:

BasicTextEncryptor textEncryptor = BasicTextEncryptor חדש (); מחרוזת privateData = "נתונים סודיים"; textEncryptor.setPasswordCharArray ("נתונים אקראיים מסוימים" .toCharArray ());

ואז נוכל להשתמש ב- הצפן () שיטה להצפנת הטקסט הרגיל:

מחרוזת myEncryptedText = textEncryptor.encrypt (privateData); assertNotSame (privateData, myEncryptedText);

אם אנו רוצים לאחסן נתונים פרטיים עבור משתמש נתון במסד הנתונים, אנו יכולים לאחסן a myEncryptedText מבלי להפר הגבלות אבטחה כלשהן. אם נרצה לפענח נתונים בחזרה לטקסט רגיל, נוכל להשתמש ב- לפענח () שיטה:

מחרוזת טקסט רגיל = textEncryptor.decrypt (myEncryptedText); assertEquals (plainText, privateData);

אנו רואים שנתונים מפוענחים שווים לנתוני טקסט רגיל שהוצפנו בעבר.

3. הצפנה חד כיוונית

הדוגמה הקודמת אינה דרך אידיאלית לבצע אימות, כלומר כאשר אנו רוצים לאחסן סיסמת משתמש. באופן אידיאלי, אנו רוצים להצפין את הסיסמה ללא דרך לפענח אותה. כאשר המשתמש מנסה להיכנס לשירות שלנו, אנו מצפינים את הסיסמה שלו ומשווים אותה עם הסיסמה המוצפנת השמורה במסד הנתונים. בדרך זו איננו צריכים לפעול על בסיסמת טקסט רגיל.

אנחנו יכולים להשתמש ב- BasicPasswordEncryptor בכיתה לביצוע ההצפנה החד-כיוונית:

סיסמת מחרוזת = "מעבר סודי"; BasicPasswordEncryptor passwordEncryptor = חדש BasicPasswordEncryptor (); מחרוזת encryptedPassword = passwordEncryptor.encryptPassword (סיסמה); 

לאחר מכן אנו יכולים להשוות סיסמה שהוצפנה כבר עם סיסמה של משתמש המבצע תהליך כניסה ללא צורך בפענוח סיסמה שכבר שמורה במסד הנתונים:

תוצאה בוליאנית = passwordEncryptor.checkPassword ("מעבר סודי", encryptedPassword); assertTrue (תוצאה);

4. קביעת תצורה של אלגוריתם להצפנה

אנו יכולים להשתמש באלגוריתם הצפנה חזק יותר, אך עלינו לזכור להתקין קבצי מדיניות שיפוט חוזק ללא הגבלה של Java Cryptography (JCE) עבור ה- JVM שלנו (הוראות התקנה כלולות בהורדה).

ביאסיפט אנו יכולים להשתמש בהצפנה חזקה באמצעות a StandardPBEStringEncryptor בכיתה והתאמה אישית באמצעות א setAlgorithm () שיטה:

מקודד StandardPBEStringEncryptor = StandardPBEStringEncryptor חדש (); מחרוזת privateData = "נתונים סודיים"; encryptor.setPassword ("קצת אקראי-passwprd"); encryptor.setAlgorithm ("PBEWithMD5AndTripleDES");

בואו נגדיר את אלגוריתם ההצפנה PBEWithMD5AndTripleDES.

לאחר מכן, תהליך ההצפנה והפענוח נראה זהה לזה של הקוד BasicTextEncryptor מעמד:

מחרוזת encryptedText = encryptor.encrypt (privateData); assertNotSame (privateData, encryptedText); מחרוזת plainText = encryptor.decrypt (encryptedText); assertEquals (plainText, privateData);

5. שימוש בפענוח רב-הברגה

כאשר אנו פועלים במכונה מרובת ליבות אנו רוצים לטפל בעיבוד פענוח במקביל. כדי להשיג ביצועים טובים אנו יכולים להשתמש ב- PooledPBEStringEncryptor וה setPoolSize () API ליצירת מאגר מעכלים. כל אחד מהם יכול לשמש את החוט השונה במקביל:

מקודד PooledPBEStringEncryptor = PooledPBEStringEncryptor חדש (); encryptor.setPoolSize (4); encryptor.setPassword ("נתונים אקראיים מסוימים"); encryptor.setAlgorithm ("PBEWithMD5AndTripleDES");

נהוג להגדיר את גודל הבריכה כך שיהיה שווה למספר ליבות המכונה. הקוד להצפנה ופענוח זהה לקודמים.

6. שימוש במסגרות אחרות

הערה אחרונה מהירה היא כי יאסיפט ניתן לשלב את הספרייה עם הרבה ספריות אחרות, כולל כמובן ה- אביב מִסגֶרֶת.

עלינו ליצור תצורה רק כדי להוסיף תמיכה בהצפנה ליישום האביב שלנו. ואם אנו רוצים לאחסן נתונים רגישים במסד הנתונים ואנחנו משתמשים בו שינה כמסגרת הגישה לנתונים, אנו יכולים גם להשתלב יאסיפט עם זה.

ניתן למצוא הוראות אודות שילובים אלה, כמו גם עם מסגרות אחרות מדריכים המדור בדף הבית של יאסיפט.

7. מסקנה

במאמר זה, הסתכלנו על יאסיפט ספרייה המסייעת לנו ליצור יישומים מאובטחים יותר באמצעות אלגוריתמי הצפנה ידועים וכבר ידועים. הוא מכוסה בממשק ה- API הפשוט וקל לשימוש.

ניתן למצוא את היישום של כל הדוגמאות וקטעי הקוד בפרויקט GitHub - זהו פרויקט Maven, כך שיהיה קל לייבא ולהפעיל אותו כפי שהוא.


$config[zx-auto] not found$config[zx-overlay] not found