স্ট্রিং সিক্রেট রাখা (ওপেন) সোর্স কোডে


50

আমি অ্যান্ড্রয়েডের জন্য একটি অ্যাপ্লিকেশন বিকাশ শেষ করেছি এবং এটি জিপিএল দিয়ে প্রকাশ করার ইচ্ছা নিয়েছি - আমি চাই এটি ওপেন সোর্স হোক। যাইহোক, অ্যাপ্লিকেশনটির প্রকৃতি (একটি গেম) হ'ল এটি ধাঁধা জিজ্ঞাসা করে এবং উত্তরগুলি স্ট্রিং রিসোর্সে কোড করে। আমি উত্তর প্রকাশ করতে পারি না! আমাকে নিরাপদে পাসওয়ার্ডগুলি সন্ধান করতে বলা হয়েছিল - তবে আমি কোনও উপযুক্ত খুঁজে পাইনি।

স্ট্রিং অ্যারেটি লুকানো, এনক্রিপ্ট করা, বা অন্যথায় অস্পষ্ট সহ আমার উত্স কোডটি প্রকাশ করা সম্ভব? কোনও অনলাইন ডাটাবেস থেকে উত্তরগুলি পড়ে?

হালনাগাদ

ইউভাল ফিল্মাসের সমাধান নীচে কাজ করেছে। আমি যখন প্রথম এটি পড়ি তখনও আমি কীভাবে এটি করব তা নিশ্চিত ছিলাম না। আমি দ্বিতীয় বিকল্পটির জন্য কিছু সমাধান পেয়েছি: উত্সটিতে হ্যাশড দ্রবণ সংরক্ষণ করে এবং ব্যবহারকারী যখনই অনুমান করে প্রতিটি সময় হ্যাশ গণনা করে। জাভাস্ক্রিপ্টে এটি করতে http://code.google.com/p/crypto-js/ এ ক্রিপ্টো-জেএস লাইব্রেরি রয়েছে । অ্যান্ড্রয়েডের জন্য, ম্যাসেজডিজাস্ট ফাংশনটি ব্যবহার করুন । সেখানে একটি অ্যাপ্লিকেশন (চালু fdroid / GitHub) বলা হয় HashPass যা এই আছে।


11
আমি ভাবছি কীভাবে অনটপিকটি এখানে রয়েছে; এটি যে কোনও ক্ষেত্রে তথ্য সুরক্ষার পক্ষে আরও উপযুক্ত ।
রাফেল

2
@ ইউভালফিল্মাস "হট প্রশ্ন" ভোট দ্বারা বোকা বোকা বানাবেন না। কিন্তু পয়েন্ট নেওয়া।
রাফেল

4
এখানে অনুপস্থিত গুরুত্বপূর্ণ বিশদগুলি হ'ল: আপনি কি কেবল ব্যবহারকারী উত্তরগুলি যাচাই করতে চান বা আপনি সঠিক উত্তরটিও মুদ্রণ করতে সক্ষম হতে চান? এবং, আপনার কি কোনও ফাজিন দরকার, বা সঠিক উত্তরগুলির একটি পরিষ্কার সীমাবদ্ধ সেট রয়েছে (যার ফলে আপনি এই সেটগুলির দ্বারা একের পর এক উত্তর পরীক্ষা করতে পারেন)?
হাইড

4
সমস্ত উত্তর জিজ্ঞাসা করছে যে সমস্যাটি আপনি কী সমাধান করতে চান। আপনি উত্তর প্রকাশ করতে পারবেন না কেন ?
রাইময়েড

1
আপনার কোডগুলি এই স্ট্রিংগুলির সাথে কী করতে সক্ষম হতে হবে? এগুলি কীভাবে ডিকোড করতে সক্ষম হওয়া দরকার? বা তাদের সাথে স্ট্রিংগুলি তুলনা করতে সক্ষম হচ্ছেন?
ডেভিড শোয়ার্জ

উত্তর:


83

আপনি কোন সমস্যার সমাধান করতে চান তার উপর নির্ভর করে আপনার কাছে কমপক্ষে দুটি বিকল্প রয়েছে।

আপনি যদি নিজের কোডটির নিরীহ পাঠকদের অজান্তেই উত্তর না পান বা ব্যবহারকারীদের প্রলুব্ধ না হন তবে আপনি এটিকে কিছুটা জটিল করে তুলতে চান তবে আপনি সমাধানগুলি এনক্রিপ্ট করতে পারেন এবং কীটি আপনার কোডের অংশ হিসাবে সঞ্চয় করতে পারেন, সম্ভবত একটি কিছু গণনার ফলাফল (এটি আরও জটিল করে তোলার জন্য)।

আপনি যদি ব্যবহারকারীদের উত্তরটি পুনরুদ্ধার করতে আটকাতে চান তবে আপনি একটি একমুখী ফাংশন, বা কম্পিউটার জারগনে, একটি হ্যাশ ফাংশন ব্যবহার করতে পারেন । উত্তর একটি হ্যাশ দোকান, এবং তারা আপনাকে পরীক্ষা করতে পারেন কিনা উত্তর এটা সম্ভব হচ্ছে উত্তর অনুমান করতে থাকলে সঠিক আদৌ এটি প্রথম খোঁজার ছাড়া। এটির অসুবিধাও রয়েছে যে সঠিক উত্তরটির নিকটে থাকা একটি উত্তর যাচাই করা শক্ত , যদিও এই সমস্যার কিছু সমাধান রয়েছে।


9
একটি জিনিস আমি যুক্ত করব যে আপনার যদি আরও বেশি সুরক্ষার প্রয়োজন হয় তবে প্রতিটি উত্তর সম্ভবত আলাদা লবণ দিয়ে সল্ট করা উচিত। এটি একবারে সমস্ত জবাবের বিরুদ্ধে অভিধান আক্রমণ এড়ায়। আপনি যদি "প্রকৃত" ক্রিপ্টো লোকেরা কীভাবে তা দেখতে চান তবে ওপেনজিপিতে স্ট্রিং-টু-কি সিস্টেমটি একবার দেখুন
ছদ্মনাম

1
কোডে হ্যাশ রাখার অর্থ সমস্ত তথ্য স্থিতিশীল এবং নুন / যা কিছু সহজেই পাওয়া যায়। আমি বিশ্বাস করি ফলস্বরূপ এটি যুক্তিসঙ্গত হবে যদি উত্তর স্থান যথেষ্ট পরিমাণে বড় হয় (যেমন 32-বিট পূর্ণসংখ্যার পূর্ণ মানের মান), অন্যথায় (যেমন একাধিক পছন্দ প্রশ্নের ক্ষেত্রে) রংধনু টেবিলটি দ্রুত সঠিক উত্তর দেয়।
আলেক্সি লেভেনকভ

3
আলেক্সি যেমন উল্লেখ করেছে, আপনার সম্ভাব্য ইনপুটগুলি যদি একটি সামান্য স্থান বিস্তৃত করে, কোডগুলিতে উত্তরগুলি সংরক্ষণ করে তা কোনও নির্ধারিত আক্রমণকারীদের জন্য উন্মুক্ত করে দেয় - এবং আমি অনুমান করছি যে বেশিরভাগ ধাঁধাগুলির পরিবর্তে ছোট ছোট রাজ্য স্পেস থাকবে, যাতে সাধারণত তাদের উত্তর অবশ্যই হবে শব্দ বা অপেক্ষাকৃত ছোট সংখ্যা। নির্দোষ ভুলগুলি এড়াতে আপনি হ্যাশ বা এনক্রিপ্ট করতে পারেন, তবে কে সত্যই এটি চায় সে উত্তর পেতে কাউকে বাধা দিতে পারে না। (প্লাস, তারা কেবল এমন কাউকে জিজ্ঞাসা করতে পারে যিনি ইতিমধ্যে আপনার ধাঁধাটি সমাধান করেছেন!)
ক্রিস হেইস

4
ক্রিস যা উল্লেখ করছে তা মোকাবেলার জন্য, আপনি একটি হ্যাশিং প্রক্রিয়াটি খুব ধীর গতিতে বেছে নিতে পারেন, বলুন এটি 100 মিমি নিয়েছে (এটি কিছু পিকে স্ট্যান্ডার্ড দ্বারা গৃহীত পদ্ধতি)। এটি এখনও ব্যবহারকারীর দৃষ্টিকোণ থেকে খুব দ্রুত, তবে অঙ্কটি আরও জটিল করে তোলে।
যুবাল ফিল্মাস

12
পুনঃটুইট করুন যদি আপনার ধাঁধাটি "জন, জো বা জেন অপরাধী ছিল" তে শেষ হয়? তারপরে এটি গণনা করা খুব সহজ হতে পারে এমনকি আপনি যদি হ্যাশটিকে পুরো মিনিট সময় নেন। পুরো গেমটি এই বিষয়টি মাথায় না রেখে এবং সমস্ত প্রশ্ন অত্যন্ত খোলামেলা না হলে এটি একটি সমস্যা তৈরি করবে। তবে হ্যাঁ, যদি আপনার প্রশ্নগুলি যদি এমন উন্মুক্ত হয় যে রাষ্ট্রের স্থান যথেষ্ট পরিমাণে থাকে তবে উত্তরগুলি সুরক্ষিত করা যায়।
ক্রিস

28

আপনার কাছে দুটি তিনটি বিকল্প রয়েছে:

উত্তরগুলি বাকি উত্স কোড থেকে পৃথক রাখুন

আপনি যদি নিজের কোডটি ওপেন সোর্স হিসাবে চান, তবে উত্তরগুলি ওপেন সোর্স হিসাবে না চান, তবে আপনি প্রশ্ন ও উত্তর ছাড়াই অ্যাপ্লিকেশনটির কোডটি ওপেন সোর্স , প্রশ্ন ও উত্তর পৃথক বদ্ধ উত্স "প্লাগইন" হিসাবে রেখেছেন বা ডেটা ফাইল। আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি উভয়কেই একটি একক অ্যাপ্লিকেশানে বান্ডিল করবে।

উত্তরগুলি আপনার উত্স কোডে রাখুন

বিকল্পভাবে, আপনি যদি খালি উত্সাহিত করতে চান তার মূল অংশ হিসাবে যদি প্রশ্নোত্তরগুলি বিবেচনা করেন তবে আপনার উত্তরগুলি উত্স কোডের মধ্যে রাখা উচিত, পছন্দমতো অপ্রচলিত যাতে অন্যরা সেগুলি পড়তে এবং সংশোধন করতে পারে । সোর্স কোডটি অবলম্বন করা যাতে এটি বোঝা যায় এবং সংশোধন করা যায় না তবে ওপেন সোর্স কোডের নীতিগুলি অনুসরণ করে না।

উত্তরগুলি একটি সার্ভারে ইন্টারনেটে রাখুন

উপরের দুটি সমাধানের মাধ্যমেই যে কেউ আপনার প্রোগ্রামটি ডাউনলোড না করেই আপনার অ্যাপ্লিকেশনটি ডাউনলোড করেছেন এমন কোনও ব্যক্তির পক্ষে আপনার প্রোগ্রামটি বাজানো ছাড়াই উত্তরগুলি খুঁজে পাওয়া সম্ভব - আপনি যদি নিজের প্রোগ্রামটি অতিরিক্ত তথ্য ছাড়াই উত্তরটি সনাক্ত করতে পারেন তবে আপনার উত্তরগুলি কীভাবে আটকানো / এনক্রিপ্ট করা উচিত, তাই নয় কোনও মানুষ আপনার সংকলিত অ্যাপ্লিকেশন পরীক্ষা করতে পারে।

আপনি যদি সত্যিই নিশ্চিত করতে চান যে কেউ উত্তরগুলি খুঁজে না পায় তবে একমাত্র আসল বিকল্প হ'ল তাদের উত্তর দেওয়া এবং অ্যাপটিতে একটি ওয়েব পরিষেবা ইত্যাদি কল করা না ... যখনই তারা উত্তরটি জানতে চান। ব্যবহারকারীর প্রবেশের উত্তরটি অ্যাপ্লিকেশনটিকে প্রেরণ করা উচিত এবং ওয়েব পরিষেবা অ্যাপ্লিকেশনটিকে উত্তরটি সঠিক কিনা কি না তা অ্যাপ্লিকেশনকে জানাতে হবে, ইতিমধ্যে সঠিক উত্তর না পাওয়া পর্যন্ত ব্যবহারকারীর উত্তর কী হবে তা বলার উপায় নেই (সংক্ষিপ্ত ওয়েব সার্ভিসটিকে জোরপূর্বক বাধ্য করা, যা আপনি সনাক্ত করতে এবং এর বিরুদ্ধে সুরক্ষা দিতে পারেন)।

আপনি যদি নিজের উত্তরগুলি অবলম্বন করার উপায়গুলি সন্ধান করেন তবে আমার কাছে এটি প্রস্তাব দেয় যে আপনি সত্যই আপনার উত্তরগুলি প্রথম স্থানে খুলতে চান না, তাই আপনার প্রথম বিকল্পগুলি বিবেচনা করা উচিত।

যদি এটি সমালোচনা করা হয় যে ব্যবহারকারী আগে থেকেই উত্তরটি সন্ধান করতে সক্ষম না হয় তবে তৃতীয় বিকল্পটি আপনার একমাত্র আসল পছন্দ, তবে আমি এমন পরিস্থিতিতে ভাবতে লড়াই করে যাচ্ছি যেখানে এটি চেষ্টা করার উপযুক্ত হবে না, কারণ এটি আপনার ব্যবহারকারীদের বাধা দেয় না not কোনও ইন্টারনেট সংযোগ ছাড়াই আপনার অ্যাপ্লিকেশন ব্যবহার করা থেকে


8
প্রশ্নোত্তর এমনকি প্লাগইন হতে হবে না, এটি একটি সাধারণ ডেটা ফাইল হতে পারে। ইনপুট ডেটা ফাইলগুলি প্রয়োজনীয়ভাবে লাইসেন্সযুক্ত সফ্টওয়্যারটির অংশ হিসাবে অন্তর্ভুক্ত নয় এবং তাদের নিজস্ব পৃথক লাইসেন্সের আওতায় আনা যেতে পারে। যতক্ষণ আপনি উত্স কোডের সাথে ব্যবহারের জন্য একটি (পৃথক) নমুনা ডেটা ফাইল সরবরাহ করেন ততক্ষণ আপনি উত্স বা উল্লিখিত উত্স থেকে সংকলিত প্রোগ্রামগুলির বিনামূল্যে ব্যবহারে বাধা দিচ্ছেন না এবং সুতরাং জিপিএল লঙ্ঘন করা উচিত নয়।
ডক্টর জে

আমি নিশ্চিত নই যে সত্যই তার সমস্যাটি সমাধান করে - উত্তরগুলিতে কোড এনক্রিপ্টড এবং হার্ড-কোডড হোক বা আলাদা ফাইল হিসাবে বিতরণ করা হোক না কেন, কোডটি এখনও উত্তরগুলি ডিক্রিপ্ট করতে সক্ষম হতে হবে, সুতরাং যে কেউ তার অ্যাপ্লিকেশন ডাউনলোড করবে সে কী করতে পারে উত্স কোড উত্তর পেতে না। (যতক্ষণ না তাদের উত্তোলন করা হয়, অন্য উত্তরে প্রস্তাবিত হিসাবে)
জনি

1
যদি উত্তরটি যাচাই করা লক্ষ্য হয় এবং সেগুলি দেখানোর প্রয়োজন না হয় তবে এটি ওয়ান ওয়ে হ্যাশের পাসওয়ার্ডের মতোই করা যেতে পারে।
জেমসআরয়ান

@ জাস্টিন, আপনাকে উত্তর দেওয়ার জন্য ধন্যবাদ এবং এটি মুক্ত উত্স গঠন করে কিনা সে সম্পর্কে আপনার মন্তব্য আকর্ষণীয়। আমি মনে করি যে উত্তরগুলি গোপন করার উদ্দেশ্য উত্স কোডটি, বা কীভাবে অ্যাপ্লিকেশনটি কাজ করে তা বিভ্রান্ত করার উদ্দেশ্যে নয়, বরং চ্যালেঞ্জের অখণ্ডতা রক্ষা করার জন্য। ক্রিপ্টোগ্রাফি যেমন দেখা যাচ্ছে যে ব্যবহারকারী যখন অনুমান করে ('এটি কি এটিই কি তাই?') তখন সেখানে না থাকা ছাড়া ধাঁধা বিতরণ করার দুর্দান্ত উপায়
নেভারমোর

4

যদি উত্সটি কোডের নৈমিত্তিক পড়া থেকে স্ট্রিংগুলিকে অস্পষ্ট করে রাখে তবে এগুলিকে উন্মুক্ত রাখুন যাতে অন্যান্য লোকেরা সহজেই তাদের নিজস্ব পরিবর্তন করতে পারে - উদাহরণস্বরূপ যদি আপনি উত্সটি একটি পাঠ্য অ্যাডভেঞ্চারে প্রকাশ করেন এবং কোনও বর্ণনামূলক পাঠ্য উপস্থিত না চান যা কোনও বিলোপকারী গঠন করে, তারপরে রট 13 এর মতো বিপরীতমুখী কিছু ব্যবহার করবে।

প্রকৃতপক্ষে, আপনি আপনার সমস্ত অনুবাদ ফাইলগুলি রট 13 করতে এবং সেগুলি ফ্লাইতে ফ্লিপ করতে পারেন।

ওপেন স্পিরিট রাখছি। এলোমেলো "ম্যাজিক" হ্যাশগুলি আসলে প্রোগ্রামার-বান্ধব নয়।


4
মনে রাখবেন যে আমাদের মধ্যে অনেক জিও ক্যাচিং লোকেরা মূলের মতো প্রায় সাবলীলভাবে পচা 13 পড়ে থাকে।
yo '

4

ওপেন সোর্সটির জন্য সোর্স কোডটি গেমের ডেটা নয়, সর্বজনীন এবং উপলভ্য করা দরকার। সুতরাং আপনি সহজেই অন্য কোনও ফাইলে ডেটা রাখতে পারেন এবং এটি প্রকাশ করতে পারেন না। আপনি যদি ফাইলটি নৈমিত্তিক পড়া আটকাতে চান তবে কিছু ক্রিপ্টো যুক্ত করুন। আমি সন্দেহ করি আপনার আবেদনের জন্য একটি শক্তিশালী ক্রিপ্টো প্রয়োজন।


1
কোন অর্থে আপনি গেমের ডেটা "প্রকাশ করতে পারবেন না"? গেমটি সেই ডেটা অ্যাক্সেস করতে সক্ষম হতে পারে যার যার সাথে গেমটির অনুলিপি থাকে তার কাছে ডেটা অনুলিপি থাকে। এটাই হ'ল প্রকাশনাটি হ'ল জনসাধারণকে প্রকাশ।
ডেভিড রিচার্বি

1
@ ডেভিডরিচার্বি আপনি প্রকাশ করতে এবং শেষ করতে চান তা উপর নির্ভর করে। সেই গেমটি বা আপনার ইঞ্জিন যা একই রকম অনেক গেম তৈরি করতে ব্যবহৃত হতে পারে? লোকগুলিকে আপনার গেমটি কাজে লাগাতে অনুমতি দিন, সুরক্ষা গর্তের জন্য কোডটি পরীক্ষা করুন কেবলমাত্র উপাদানগুলি পুনরায় ব্যবহার করুন? যদি আপনার ইন্টারফেসটি "Q & a + প্রোগ্রাম = গেম সহ সিএসভি" এর মতো সহজ হয় তবে আমি মনে করি এটি কেবল সিএসভি নয়, কেবলমাত্র প্রোগ্রামটি প্রকাশ করা অনুমেয়।
রাফেল

1
@ রাফেল তবে এমন একটি গেম বিতরণ করা যা একটি এক্সিকিউটেবল এবং একটি সাধারণ টেক্সট ডেটা ফাইল সমন্বিত উত্তরগুলি গোপন করার লক্ষ্য অর্জন করে না। আপনি যদি ডেটা ফাইলের কোনও এনক্রিপ্ট করা সংস্করণ প্রস্তাব করতে চান তবে এটি ঠিক আছে, যতক্ষণ না সবাই বুঝতে পারে যে এটি কেবল অস্পষ্টতার দ্বারা সুরক্ষা (কীটি উত্সতে রয়েছে)। তবে আমরা এই প্রশ্নে উঠি যে ডেটাফাইলে প্লেইটেক্সট জিপিএল অর্থে উত্স কোড গঠন করে এবং সেই সময়ে, প্রশ্নটি কম্পিউটার বিজ্ঞানের পরিবর্তে জিপিএলের ব্যাখ্যার বিষয় হয়ে দাঁড়ায়।
ডেভিড রিচার্বি

@ ডেভিডরিচারি: একমত তবুও আইএনএল হলেও, আমি খুব সন্দেহ করি যে ধাঁধা এবং তাদের উত্তরগুলি সমন্বিত একটি ডেটা ফাইল প্রোগ্রামের এমন একটি প্রয়োজনীয় এবং অপরিবর্তনীয় অংশ হিসাবে বিবেচিত হবে যে এটি আলাদাভাবে লাইসেন্স করা যাবে না - বিশেষত যদি আপনি একটি এনক্রিপ্ট করা নমুনা ডেটা ফাইল অন্তর্ভুক্ত করেন উত্স বন্টন, সংশোধন এবং প্রয়োজনীয় হলে এটি এনক্রিপ্ট করার নির্দেশাবলী সহ, এটি পরিষ্কার করে দেওয়ার জন্য যে উত্স কোড সহ যে কেউ প্রকৃতপক্ষে তাদের নিজস্ব কাস্টমাইজড ডেটা ফাইল তৈরি করতে এবং প্রোগ্রামের সাথে সেগুলি ব্যবহার করতে পারে।
ইলমারি করোনেন

4

আপনি যদি নিজের ব্যবহারকারীদের সেগুলি জানতে না চান তবে আপনি কেন আপনার জিপিএল উত্স কোডে উত্তরগুলি সঞ্চয় করবেন? এমনকি যদি তারা এখন পরিচিত না হয় বা সহজেই ক্র্যাকযোগ্য হয় তবে তারা ভবিষ্যতে (এবং সম্ভবত এটিও) হতে পারে।

এগুলিকে আপনার অ্যাপে সংরক্ষণ করার পরিবর্তে বাহ্যিক ডাটাবেস ব্যবহার করুন। একটি ছোট ওয়েব সার্ভিস তৈরি করুন যা আপনার ডাটাবেজে থাকা উত্তরগুলির সাথে তুলনা করে। তারপরে যখনই যাচাই করতে হয় তখন আপনার অ্যাপ্লিকেশনটিকে সেই ওয়েব সার্ভিসে কল করতে দিন। মূল সমস্যাটি হ'ল এটির জন্য ইন্টারনেট অ্যাক্সেসের প্রয়োজন হওয়ায় আপনি কিছু গতি এবং সম্ভাব্য ইউজারবেস হারাবেন। আপনার অ্যাপ্লিকেশন লাইসেন্সটি কেবল অ্যাপ্লিকেশানের জন্যই প্রয়োগ করা উচিত, ওয়েব সার্ভিস নয়।

আপনি কেবল নিজের উত্তরগুলি একটি ছোট ডাটাবেসে রাখতে পারেন এবং এটি আপনার প্রোগ্রামে রাখতে পারেন। যতদূর আমি জানি, জিপিএল কেবলমাত্র সোর্স কোডে প্রযোজ্য, আপনার অ্যাপ্লিকেশন সঞ্চয় করে এমন কোনও ডেটা নয়। যদিও আমি এতে ভুল হতে পারি।


1
"যতদূর আমি জানি, জিপিএল কেবল উত্স কোডে প্রযোজ্য, আপনার অ্যাপ্লিকেশন যে কোনও ডেটা সঞ্চয় করে না"। ঠিক আছে, জিপিএল বলেছে যে "আপনাকে অবশ্যই সামগ্রিকভাবে পুরো লাইসেন্সটি লাইসেন্সের আওতায় আনতে হবে, যে কোনও অনুলিপি দখলে আসে" " সুতরাং আপনি ভাবতে পারেন যে আমাদের এখন সিদ্ধান্ত নেওয়া দরকার যে ডেটা "সম্পূর্ণ কাজের" অংশ। তবে আসলে, অবশ্যই সমস্ত জিপিএলের বিধিনিষেধ (এটি সহ) কেবলমাত্র লাইসেন্সধারীদের ক্ষেত্রে প্রযোজ্য। লাইসেন্সদাতাদের পক্ষেও জিপিএলের প্রতি অনুভূতি বজায় রাখা খুব সুন্দর, তবে তাদের কপিরাইট পুলিশ থেকে আসা সম্পর্কে উদ্বিগ্ন হওয়ার দরকার নেই।
পিটার ফোর্ড

1

মনে রাখবেন যে আপনি যদি কোনও দূরবর্তী ওয়েব সার্ভারে একটি ডাটাবেস সংরক্ষণ করেন, তখনও দেখা গেছে এমন সমস্ত সঠিক কী / মান জোড়া লিখে কেবল ডাটাবেসটি নকল করা যায়। এবং সাধারণভাবে বলতে গেলে, মোবাইল অ্যাপ্লিকেশনগুলিকে ত্রুটি না দেওয়ার বা কাজ করা বন্ধ করার চেষ্টা করা উচিত কারণ নেটওয়ার্কটি ডাউন (কাতযুক্ত মেসেজিং ব্যবহার করুন, এবং "আপনি যখন পারবেন তখন আপডেট করুন")।

সুতরাং আপনি যদি কোনও স্থানীয় ডাটাবেস চান তবে এটি স্পষ্টভাবে ডিক্রিপ্ট হওয়া ধারণাটি পছন্দ না করে আপনি একটি ব্লুম ফিল্টার ব্যবহার করতে পারেন (কোনও নেটওয়ার্কের সাথে কথা বলা বা স্থানীয়ভাবে একটি বৃহত ডিক্রিপ্টড ডাটাবেস থাকা এড়াতে)। যখন মেমরির স্থানটি সত্যই শক্ত ছিল তখন এইভাবে বানান চেকাররা কাজ করত।

সুতরাং, আপনি যদি ফিল্টারটিতে প্রশ্ন / উত্তর জোড়া যুক্ত করেন তবে:

হ্যাশ (NormalizeString (প্রশ্ন [এন])) + + হ্যাশ (NormalizeString (উত্তর [এন]))

যদি আপনি জিজ্ঞাসা করেন যে "ভার্জিনিয়ার ক্যাপিটল? রিচমন্ড" সেটে রয়েছে, তবে এটি "স্পষ্টতই না", অথবা "প্রায় অবশ্যই হ্যাঁ" উত্তর দেবে। আপনি যদি খুব বেশি মিথ্যা ধনাত্মক হন তবে ডাটাবেসটিকে আরও বড় করুন।

আপনি ক্ষুদ্র স্থানে একটি বিশাল ডাটাবেস রাখতে পারেন, ধরে নিলেন যে ব্যবহারকারী প্রশ্ন এবং উত্তরটি ঠিক আপনার প্রত্যাশার মতো করে দিবেন। ডাটাবেস ছোট রাখলে আপডেটগুলি সাহায্য করে কারণ সম্ভবত তাদের ওয়্যারলেস নেটওয়ার্কের মাধ্যমে স্থানান্তর করতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.