ध्यान रखें, निम्नलिखित एक उचित सुरक्षा समाधान का विकल्प नहीं है।
चार दिनों के लिए इस के साथ खेलने के बाद, मैंने NuGet से केवल ओपन सोर्स System.Data.SQLite पैकेज का उपयोग करके एक साथ रखा है। मैं नहीं जानता कि यह कितना सुरक्षा प्रदान करता है। मैं केवल अध्ययन के अपने पाठ्यक्रम के लिए इसका उपयोग कर रहा हूं। यह डीबी बनाएगा, इसे एन्क्रिप्ट करेगा, एक टेबल बनाएगा, और डेटा जोड़ेगा।
using System.Data.SQLite;
namespace EncryptDB
{
class Program
{
static void Main(string[] args)
{
string connectionString = @"C:\Programming\sqlite3\db.db";
string passwordString = "password";
byte[] passwordBytes = GetBytes(passwordString);
SQLiteConnection.CreateFile(connectionString);
SQLiteConnection conn = new SQLiteConnection("Data Source=" + connectionString + ";Version=3;");
conn.SetPassword(passwordBytes);
conn.Open();
SQLiteCommand sqlCmd = new SQLiteCommand("CREATE TABLE data(filename TEXT, filepath TEXT, filelength INTEGER, directory TEXT)", conn);
sqlCmd.ExecuteNonQuery();
sqlCmd = new SQLiteCommand("INSERT INTO data VALUES('name', 'path', 200, 'dir')", conn);
sqlCmd.ExecuteNonQuery();
conn.Close();
}
static byte[] GetBytes(string str)
{
byte[] bytes = new byte[str.Length * sizeof(char)];
bytes = System.Text.Encoding.Default.GetBytes(str);
return bytes;
}
}
}
वैकल्पिक रूप से, आप इसे हटा सकते हैं conn.SetPassword(passwordBytes);
और इसे बदल सकते हैं conn.ChangePassword("password");
जिसके बाद इसे रखने की आवश्यकता हैconn.Open();
पहले के बजाय । तब आपको गेटबाइट विधि की आवश्यकता नहीं होगी।
डिक्रिप्ट करने के लिए, कॉल खोलने से पहले अपने कनेक्शन स्ट्रिंग में पासवर्ड डालने की बात है।
string filename = @"C:\Programming\sqlite3\db.db";
string passwordString = "password";
SQLiteConnection conn = new SQLiteConnection("Data Source=" + filename + ";Version=3;Password=" + passwordString + ";");
conn.Open();