এস.জে.সি.এল, ক্রিপ্টোজেএস এবং / অথবা ওয়েবক্রিপ্টো যে উত্তোলন করে তা বিদ্যমান উত্তরগুলি অগত্যা ভুল নয় তবে তারা প্রাথমিকভাবে সন্দেহ করতে পারে ততটা নিরাপদ নয়। সাধারণত আপনি লাইবসোডিয়াম ব্যবহার করতে চান । প্রথমে আমি ব্যাখ্যা করব কেন, তারপরে কীভাবে।
এসজেসিএল, ক্রিপ্টোজেএস, ওয়েবক্রিপ্টো ইত্যাদি কেন নয়?
সংক্ষিপ্ত উত্তর: আপনার এনক্রিপশনটি প্রকৃতপক্ষে সুরক্ষিত হওয়ার জন্য, এই লাইব্রেরিগুলি আপনি অনেকগুলি পছন্দ যেমন প্রত্যাখ্যান করে ব্লক সিফার মোড (সিবিসি, সিটিআর, জিসিএম) আপনি যদি না বলতে পারেন তবে আমি কেবল তালিকাভুক্ত তিনটির মধ্যে কোনটি সুরক্ষিত তা যদি না বলতে পারে ব্যবহার এবং কি সীমাবদ্ধতার অধীনে, আপনি পছন্দের এই ধরনের ভারাক্রান্ত করা উচিত নয় এ সব )।
যদি আপনার কাজের শিরোনাম ক্রিপ্টোগ্রাফি ইঞ্জিনিয়ার না হয় তবে নিরাপদভাবে এটি প্রয়োগের পক্ষে আপনার পক্ষে প্রতিক্রিয়া রয়েছে।
ক্রিপ্টোজেএস এড়াবেন কেন?
ক্রিপ্টোজেএস মুষ্টিমেয় বিল্ডিং ব্লক সরবরাহ করে এবং কীভাবে নিরাপদে সেগুলি ব্যবহার করবেন সে সম্পর্কে আপনি আশা করেন। এমনকি এটি সিবিসি মোডে ডিফল্ট হয় ( সংরক্ষণাগারভুক্ত )।
সিবিসি মোডটি খারাপ কেন?
এইএস-সিবিসি দুর্বলতার বিষয়ে এই লিখনটি পড়ুন ।
ওয়েবক্রিপ্টো এড়িয়ে চলবেন কেন?
ওয়েবক্রিপ্টো হ'ল পটলাক স্ট্যান্ডার্ড, কমিটি দ্বারা ডিজাইন করা, সেই উদ্দেশ্যে যেগুলি ক্রিপ্টোগ্রাফি ইঞ্জিনিয়ারিংয়ের অরথোগোনাল। বিশেষত, ওয়েবক্রিপ্টোকে ফ্ল্যাশ প্রতিস্থাপন করা হয়েছিল, সুরক্ষা সরবরাহ করা হয়নি ।
এসজেসিএল এড়াবেন কেন?
এসজেসিএলের পাবলিক এপিআই এবং ডকুমেন্টেশন ব্যবহারকারীদের একটি মানব-স্মরণ করা পাসওয়ার্ড সহ ডেটা এনক্রিপ্ট করতে অনুরোধ করে। এটি আসল বিশ্বে আপনি যা করতে চান তা খুব কমই হয়।
অতিরিক্তভাবে: এর ডিফল্ট PBKDF2 রাউন্ড গণনাটি আপনি এটির চেয়ে প্রায় 86 গুণ ছোট । এইএস -128-সিসিএম সম্ভবত ভাল আছে।
উপরের তিনটি বিকল্পের মধ্যে, এসজেসিএল কম কান্নার মধ্যে শেষ হওয়ার সম্ভাবনা রয়েছে। তবে আরও ভাল বিকল্প উপলব্ধ রয়েছে।
লিবসোডিয়াম কেন আরও ভাল?
আপনাকে সাইফার মোড, হ্যাশ ফাংশন এবং অন্যান্য অপ্রয়োজনীয় বিকল্পগুলির একটি মেনু মধ্যে বেছে নেওয়ার দরকার নেই। আপনি কখনই আপনার প্যারামিটারগুলি অনুসন্ধান এবং আপনার প্রোটোকল থেকে সমস্ত সুরক্ষা অপসারণের ঝুঁকি নেবেন না ।
পরিবর্তে, লাইবসোডিয়াম আপনাকে সর্বাধিক সুরক্ষা এবং মিনালিমেস্টিকাল এপিআইয়ের জন্য সহজ বিকল্পগুলি দেয়।
crypto_box()
/ crypto_box_open()
প্রমাণীকৃত পাবলিক-কী এনক্রিপশন প্রস্তাব offer
- প্রশ্নের আলগোরিদম X25519 (কার্ভ 25519 ওভার ECDH) এবং XSalsa20-Poly1305 একত্রিত করে তবে নিরাপদে এটি ব্যবহারের জন্য আপনাকে জানার (বা এমনকি যত্ন নেওয়া) দরকার নেই
crypto_secretbox()
/ crypto_secretbox_open()
প্রস্তাবিত ভাগ-কী প্রমাণীকরণযুক্ত এনক্রিপশন।
- প্রশ্নের মধ্যে থাকা অ্যালগরিদমটি এক্সসালসা20-পলি 01305, তবে আপনাকে জানার / যত্ন নেওয়ার দরকার নেই
অতিরিক্তভাবে, কয়েক ডজন জনপ্রিয় প্রোগ্রামিং ল্যাঙ্গুয়েজে লাইবসোডিয়ামের বাইন্ডিং রয়েছে , সুতরাং এটি সম্ভবত খুব সম্ভব যে লিবসোডিয়াম অন্য একটি প্রোগ্রামিং স্ট্যাকের সাথে আন্তঃসংযোগ স্থাপনের চেষ্টা করার সময় কাজ করবে । এছাড়াও, লাইবসোডিয়াম সুরক্ষা ত্যাগ ছাড়াই খুব দ্রুত হতে থাকে।
জাভাস্ক্রিপ্টে লিবসোডিয়াম কীভাবে ব্যবহার করবেন?
প্রথমত, আপনাকে একটি জিনিস সিদ্ধান্ত নিতে হবে:
- আপনি কি কেবল ডেটা এনক্রিপ্ট / ডিক্রিপ্ট করতে চান (এবং সম্ভবত এখনও কোনওভাবে প্লেটেক্সটটি ডাটাবেস ক্যোয়ারিতে নিরাপদে ব্যবহার করতে পারেন) এবং বিশদ সম্পর্কে চিন্তা করবেন না? অথবা ...
- আপনার কি কোনও নির্দিষ্ট প্রোটোকল প্রয়োগ করতে হবে?
আপনাকে প্রথমে অপশনটি নির্বাচন করা হলে পেতে CipherSweet.js ।
ডকুমেন্টেশন অনলাইনে উপলব্ধ । EncryptedField
বেশিরভাগ ব্যবহারের ক্ষেত্রে যথেষ্ট, তবে আপনার যদি এনক্রিপ্ট করতে চান এমন অনেকগুলি পৃথক ক্ষেত্র যদি থাকে EncryptedRow
এবং আপনার EncryptedMultiRows
এপিআইগুলি সহজ হতে পারে।
সিফারসুইট দিয়ে, আপনাকে নিরাপদে কীভাবে ব্যবহার করতে কোন ননস / চতুর্থ তা জানতে হবে না।
অতিরিক্তভাবে, সিফারেক্সট আকারের মাধ্যমে সামগ্রীর বিষয়ে তথ্য ফাঁস না করে এই হ্যান্ডলগুলি int
/ float
এনক্রিপশনটি পরিচালনা করে ।
অন্যথায়, আপনি সোডিয়াম-প্লাস চাইবেন , যা বিভিন্ন লাইবসোডিয়াম মোড়কের কাছে ব্যবহারকারী-বান্ধব ফ্রন্টএন্ড। সোডিয়াম-প্লাস আপনাকে পারফরম্যান্ট, অ্যাসিনক্রোনাস, ক্রস-প্ল্যাটফর্ম কোড লিখতে দেয় যা নিরীক্ষণ করা সহজ এবং এর কারণ।
সোডিয়াম-প্লাস ইনস্টল করতে, কেবল চালান ...
npm install sodium-plus
ব্রাউজার সমর্থনের জন্য বর্তমানে কোনও পাবলিক সিডিএন নেই। এটি শীঘ্রই পরিবর্তিত হবে। যাইহোক, আপনি দখল করতে পারেন sodium-plus.min.js
থেকে সর্বশেষ গিটহাব মুক্তি যদি আপনি এটি প্রয়োজন।
const { SodiumPlus } = require('sodium-plus');
let sodium;
(async function () {
if (!sodium) sodium = await SodiumPlus.auto();
let plaintext = 'Your message goes here';
let key = await sodium.crypto_secretbox_keygen();
let nonce = await sodium.randombytes_buf(24);
let ciphertext = await sodium.crypto_secretbox(
plaintext,
nonce,
key
);
console.log(ciphertext.toString('hex'));
let decrypted = await sodium.crypto_secretbox_open(
ciphertext,
nonce,
key
);
console.log(decrypted.toString());
})();
সোডিয়াম-প্লাসের জন্য ডকুমেন্টেশনগুলি গিথুবে উপলভ্য।
আপনি যদি একটি ধাপে ধাপে টিউটোরিয়াল চান, এই ডিভ টু নিবন্ধটি আপনি যা খুঁজছেন তা রয়েছে।