ویرگول
ورودثبت نام
aliwiki
aliwikiبرنامه نویسیم چیزایی که میدونم یا برام جالبه را میزارم
aliwiki
aliwiki
خواندن ۱ دقیقه·۷ روز پیش

اینطوری پیاماتو رمزنگاری کن و هرجایی بفرس

یکی از چالش های ما موقعه استفاده از پیام رسان ها اینه که نمیتونیم اعتماد کنیم که آیا کس دیگه ای به جز ما داره اون پیام ها را میبینه یا نه🤔

یه راه حل وجود داره رمزنگاری پیام با کلید عمومی و خصوصی! که کدوشو نوشتم و میتونید استفاده کنید

شیوه کاری اینطوره که هر دو طرف برای خودشون یه کلید عمومی و یه کلید خصوصی میسازن. بعد هر دو طرف کلید عمومیشون را باهم به اشتراک میزارن. مهم نیست که بقیه کلید عمومی را ببینن چون هر کس بخواد به شما پیام بده با کلید عمومی شما پیام را رمزنگاری میکنه و اون پیام فقط با کلید خصوصی ای که پیش خودتونه و کس دیگه ای ندارتش رمز گشایی میشه

کدش را با js نوشتم که هم سمت کلاینت رو مرورگر بتونید استفاده کنید هم سمت سرور و با node:

const crypto = require('crypto') // تابع برای تولید کلیدهای پابلیک و پرایوت async function generateKeys() { const keyPair = await crypto.subtle.generateKey( { name: "RSA-OAEP", modulusLength: 2048, publicExponent: new Uint8Array([1, 0, 1]), hash: "SHA-256", }, true, ["encrypt", "decrypt"] ); return keyPair; } // تابع برای رمزنگاری با کلید پابلیک async function encryptWithPublicKey(publicKey, data) { const encrypted = await crypto.subtle.encrypt( { name: "RSA-OAEP", }, publicKey, new TextEncoder().encode(data) ); return encrypted; } // تابع برای رمزگشایی با کلید پرایوت async function decryptWithPrivateKey(privateKey, encryptedData) { const decrypted = await crypto.subtle.decrypt( { name: "RSA-OAEP", }, privateKey, encryptedData ); return new TextDecoder().decode(decrypted); } // مثال استفاده (async () => { const { publicKey, privateKey } = await generateKeys(); const originalText = "Hi it's me!"; const encrypted = await encryptWithPublicKey(publicKey, originalText); console.log("Encrypted Text: ", encrypted); const decrypted = await decryptWithPrivateKey(privateKey, encrypted); console.log("Decrypted Text: ", decrypted); })();
رمزنگاریکلید عمومیامنیتکلید خصوصی
۰
۰
aliwiki
aliwiki
برنامه نویسیم چیزایی که میدونم یا برام جالبه را میزارم
شاید از این پست‌ها خوشتان بیاید