מודול ההצפנה Node.js מייעל את תהליך ביצוע פעולות הצפנה. הנה איך להשתמש בו.

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

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

כאן תוכלו לחקור את היישומים השונים של מודול ההצפנה Node.js וכיצד תוכלו להשתמש בהם כדי לאבטח את היישומים שלכם.

האשינג

Hashing היא טכניקת הצפנה חד-כיוונית שבו אתה יכול להשתמש כדי להפוך מפתח או מחרוזת נתונים לפלט בגודל קבוע המכונה hash או digest.

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

מודול ההצפנה Node.js תומך בפונקציות גיבוב שונות כגון SHA-256, SHA-512, MD5 ועוד.

אתה יכול לגיבוב נתונים באמצעות מודול ההצפנה createHash שיטה, שלוקחת את אלגוריתם הגיבוב כארגומנט. השיטה מחזירה א בְּלִיל אובייקט, שבו אתה יכול להשתמש כדי לגיבוב את הנתונים באמצעות עדכון ו לְעַכֵּל שיטות.

instagram viewer

לדוגמה:

const קריפטו = לִדרוֹשׁ('קריפטו');

const נתונים = "סיסמה";

// יצירת אובייקט hash
const hashAlgo = crypto.createHash('sha256')

// העברת הנתונים ל-hash
hashAlgo.update (נתונים);

// יצירת ה-hash בפורמט הנדרש
const hash = hashAlgo.digest('hex');

לְנַחֵם.עֵץ(`חשיש: ${hash}`);

בדוגמה למעלה, מודול הקריפטו createHash יצר אובייקט hashing עם sha256 אלגוריתם הגיבוב. ה עדכון השיטה על אובייקט ה-hash לוקחת את נתוני הקלט ומעריכה אותם. אז ה לְעַכֵּל השיטה לוקחת פרמטר קידוד, מציינת את פורמט ערך הגיבוב של הפלט, ומחזירה את ה-hash בפורמט שצוין (hex).

Hashing שימושי לאימות שלמות הנתונים, אחסון סיסמאות, חתימות דיגיטליות ועוד.

הפקת נתונים אקראיים

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

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

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

בבדיקה, אתה יכול להשתמש בו כדי לדמות תרחישים בעולם האמיתי ומקרי קצה.

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

מספר זה מייצג את גודל הבתים שהשיטה תייצר. עם זאת, המספר לא יכול להיות גדול מ 2³¹ - 1 (2147483647), שהוא הערך המקסימלי שיכול להיות מיוצג על ידי מספר שלם בסימן של 32 סיביות.

לדוגמה:

const קריפטו = לִדרוֹשׁ("קריפטו");

// צור בתים אקראיים
const randomBytes = crypto.randomBytes(32);

// המר להקסה
const randomString = randomBytes.toString("הקס");

לְנַחֵם.log (randomString); // יומן מחרוזת אקראית לקונסולה

בלוק הקוד שלמעלה יוצר ומתעד מחרוזת אקראית של 64 תווים הקסדצימליים (32 בתים) לקונסולה.

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

הצפנה ופענוח ב-Node.js

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

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

מודול ההצפנה Node.js מספק תמיכה באלגוריתמי הצפנה ופענוח שונים, כולל AES (Advanced Encryption Standard), DES (Data Encryption Standard) ו-RSA (ריבסט–שמיר–אדלמן).

כיצד להצפין נתונים ב-Node.js באמצעות מודול ההצפנה

אתה יכול להצפין נתונים באמצעות crypto.createCipheriv() שיטה, שלוקחת את אלגוריתם ההצפנה, המפתח הסודי, ווקטור אתחול כקלט. המפתח הסודי תלוי באלגוריתם ההצפנה שבו אתה משתמש. למשל, עבור אלגוריתם aes-256 ב CBC במצב, אורך המפתח חייב להיות 32 בתים.

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

לדוגמה:

const קריפטו = לִדרוֹשׁ("קריפטו");

// צור מפתח סודי להצפנה ופענוח.
const secretKey = crypto.randomBytes(32);

// צור וקטור אתחול
const iv = crypto.randomBytes(16);

// נתונים שיוצפנו
const טקסט רגיל = "זו הודעה סודית";

// צור אובייקט צופן
const cipher = crypto.createCipheriv("aes-256-cbc", secretKey, iv);

// הצפין את הנתונים
לתת encryptedText = cipher.update (plainText, "utf-8", "הקס");

// סיים את ההצפנה
encryptedText += cipher.final("הקס");

לְנַחֵם.log (טקסט מוצפן);

הדוגמה שלמעלה מדגימה כיצד ניתן להצפין טקסט רגיל באמצעות aes-256 במצב CBC באמצעות מודול ההצפנה. זה יוצר מפתח סודי ווקטור אתחול באמצעות ה crypto.randomBytes שיטה. לאחר מכן יוצר אובייקט צופן באמצעות ה crypto.createCipheriv שיטה, ומצפין את הודעת הטקסט הפשוטה באמצעות ה cipher.update ו cipher.final שיטות.

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

כיצד לפענח נתונים ב-Node.js באמצעות מודול ההצפנה

אתה יכול לפענח נתונים מוצפנים באמצעות מודול ההצפנה crypto.createDecipheriv() שיטה, שלוקחת את אלגוריתם הפענוח, המפתח הסודי, ווקטור אתחול כקלט. השיטה מחזירה א לְפַעֲנֵחַ אובייקט, שבו אתה יכול להשתמש כדי לפענח את הנתונים באמצעות Decipher.update() ו Decipher.final() שיטות.

לדוגמה:

// צור אובייקט פענוח
const decipher = crypto.createDecipheriv("aes-256-cbc", secretKey, iv);

// לפענח את הנתונים
לתת decryptedText = decipher.update (encryptedText, "הקס", "utf-8");

// סיים את הפענוח
decryptedText += decipher.final("utf-8");

לְנַחֵם.log (decryptedText); // זוהי הודעה סודית

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

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

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

יישומים אחרים של מודול הקריפטו Node.js

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