문제

데이터베이스에 비밀을 저장 해야하는 응용 프로그램을 개발하고 있습니다.

데이터가 암호화되거나 비밀번호 보호 또는 둘 다로 저장되는 휴대용 데이터베이스 (Firebird, SQLITE 등)가 필요합니다.

해 보자 예를 들어 비밀번호 관리자를 만들고 싶습니다. 해당 비밀번호를 데이터베이스에 저장해야합니다. 나는 Embed Firebird를 사용하는 데 익숙하지만 비밀 데이터에는 적합하지 않습니다.

또 다른 솔루션은 파일에 연결되어 있지 않을 때 데이터베이스를 자연스럽게 사용하고 데이터베이스 파일을 암호화하는 것이지만 보안 또는 성능 영향은 확실하지 않습니다.

당신이 추천하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

부르는 프로젝트가 있습니다 sqlite-crypt. 당신의 최선의 방법이어야합니다. 디스크 암호화 된 모든 데이터가 포함 된 SQLITE DB.

다른 팁

또한 DLL 만 필요한 SQL Server Compact Edition을 살펴볼 수 있으며 SQLITE 또는 ACCESS, Firebird 등과 같은 단일 파일에 데이터를 저장합니다.

또한 암호화 기능이 내장되어 있습니다.

일부 참조 :

비밀번호 암호화

당신에 대한 나의 대답을 참조하십시오 다른 질문 OS.

솔직히? 사용 truecrypt 또는 heakass.

나는 CJM에 동의하지만, 자신의 글을 쓰는 데 데드 세트가 있다면 쓰기 시간에 스트림을 암호화하고 읽기 시간에 해독해야합니다. 다소 강한 게시 된 알고리즘은 물건을 안전하게 유지해야합니다.

암호화 된 SQLITE 데이터베이스 작업에 대한 RealBasic의 내장 지원은 몇 가지 프로젝트에서 저에게 효과적이었습니다.

체크 아웃하는 것이 좋습니다 sqlcipher (전체 공개, 저는 개발자 중 하나입니다!) SQLITE에 대한 투명한 페이지 수준 암호화의 무료 및 오픈 소스 구현입니다. 구현은 상당히 강력하고 활발한 개발 중이며 사용하기가 매우 쉽습니다 (비교적 말하면).

나는 두 번째로 cheepass를 사용하라는 제안입니다. 민감한 데이터를위한 훌륭한 상점이며 꽤 좋은 API를 노출시킵니다. 다음은 표준 키패스 2 데이터베이스를 읽는 방법의 예입니다.

var dbpath = @"C:\path\to\passwords.kdbx";
var masterpw = "Your$uper$tr0ngMst3rP@ssw0rd";

var ioConnInfo = new IOConnectionInfo { Path = dbpath };
var compKey = new CompositeKey();
compKey.AddUserKey(new KcpPassword(masterpw));

var db = new KeePassLib.PwDatabase();
db.Open(ioConnInfo, compKey, null);

var kpdata = from entry in db.RootGroup.GetEntries(true)
                select new
                {
                    Group = entry.ParentGroup.Name,
                    Title = entry.Strings.ReadSafe("Title"),
                    Username = entry.Strings.ReadSafe("UserName"),
                    Password = entry.Strings.ReadSafe("Password"),
                    URL = entry.Strings.ReadSafe("URL"),
                    Notes = entry.Strings.ReadSafe("Notes")

                };                                      
db.Close();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top