DEB4u Ответов: 2

Как зашифровать файл SQLITE .db


Привет,

Я разработал приложение для windows, которое работает на базе данных sqlite. Я упаковываю этот файл .db с установщиком. Но я хочу, чтобы этот файл .db не открывался никаким редактором sqlite, таким как SqliteAdmin и т. д.. Есть идеи, как это сделать??


Спасибо

Kenneth Haugland

Разве вы не можете установить его защищенным паролем? и зашифровать данные?

DEB4u

защищенный паролем

Sergey Alexandrovich Kryukov

Означает ли это, что вы не используете его в качестве сервера? Вам нужно объяснить, от кого вы его защищаете. Если есть ключ, чтобы расшифровать его, чтобы служить данным, Любой, кто может получить ключ, может расшифровать его тоже. Итак, какой-нибудь реалистичный сценарий?
--СА

2 Ответов

Рейтинг:
20

DEB4u

он работал для установки пароля базы данных :
соед = новый SQLiteConnection()
Коннектикут.ChangePassword("пароль")
..

Он устанавливает пароль.. но как удалить пароль?

Mehdi Gholam

Обычно вы открываете другую БД без пароля, а затем копируете данные.

[no name]

"Он устанавливает пароль ... но как удалить пароль?"

conn = New SQLiteConnection() conn.ChangePassword("Спасский пароль")

(Spassword = string.empty)

или conn = New SQLiteConnection() conn.Метода changepassword("")

Рейтинг:
1

Bilal Haider

Чтобы установить пароль:

public static void SetPassword ()
{
    var con = new SQLiteConnection(connectionString);
    con.Open();
    con.ChangePassword(PASSWORD);
    con.Close();
}


Чтобы удалить пароль:
public static void ReSetPassword()
{
    var con = new SQLiteConnection(connectionString);
    con.Open();
    con.ChangePassword("");
    con.Close();
}


Чтобы открыть зашифрованную базу данных программно, добавьте пароль к обычной строке подключения:
connectionString += "Password=" + thePassword + ";";


aruyc

Получение ошибки при запросе защищенной паролем базы данных "файл зашифрован или не является базой данных", даже если пароль в строке подключения правильный.

код:
публичный файл данных()
{
строка dbPath = Environment.Текущей каталог + "\\базы данных\mydb1.базы данных SQLite";
строка conn = @"источник данных=" + dbPath + ";";
sqlcon = новое соединение SQLiteConnection(conn);

sqlcon.Открыть();
sqlcon.ChangePassword("mydb"); //установка пароля здесь
sqlcon.Закрывать();

conn = @"источник данных=" + dbPath + ";пароль=mydb;";
sqlcon = новое соединение SQLiteConnection(conn);
}

внутренний набор данных SQLiteSelect(string TableName)
{
SQLiteCommand cmd = новая команда SQLiteCommand(sqlcon);
DataSet ds = новый набор данных(имя таблицы);
sqlcon.Открыть();
УМК.CommandText = "select * from" + TableName;
SQLiteDataAdapter datadapter = новый SQLiteDataAdapter(cmd);
пробовать
{
datadapter.Fill(ds, TableName);
}
поймать (исключение бывший)
{
Ящик для сообщений.Показать("ошибка:" + ex.сообщение);
}
наконец
{
УМК.Располагать();
sqlcon.Закрывать();
}
возврат ДС;
}

Я получаю ошибку в
datadapter.Fill(ds, TableName);

что я делаю не так?

aruyc

Нашел решение моего вопроса. когда вам нужно снова открыть соединение, просто инициализируйте объект соединения строкой соединения, имеющей пароль. работающий сейчас.

sandip.chaudhari90

Не могли бы вы подробно объяснить, что у меня такая же проблема