나는 sqlite 데이터베이스를 사용하는 응용 프로그램을 개발했습니다. 이제 SQLcipher를 사용하여 데이터베이스를 암호화하고 싶습니다. SQLcipher를 사용하여 기존 데이터베이스를 암호화 할 수 있습니까?SQLite 데이터베이스에서 암호화를 사용하는 방법
답변
Android 용 응용 프로그램 통합 용 이 튜토리얼에서는 Android 용 SQLCipher의 바이너리를 Android 응용 프로그램에 통합하는 방법을 다룹니다. 이 튜토리얼에서는 Android SDK가 로컬 개발 컴퓨터에 이미 설치되어 있다고 가정합니다.
다음 명령을 발행 샘플 안드로이드 응용 프로그램을 만들려면 샘플 안드로이드 응용 프로그램 만들기 : 안드로이드에 대한 SQLCipher의 소스 코드가 공개 Github.com에 유지
% mkdir demo-app
% cd demo-app
% android create project \
--target android-10 \
--name demoapp \
--path . \
--activity HelloSQLCipherActivity \
--package com.demo.sqlcipher
얻기 바이너리를, 현재 바이너리 릴리스 여기에서 찾을 수 있습니다. Android 용 SQLCipher 소스 작성에 대한 자세한 내용은 아래 지침을 참조하십시오. 우리는 수동으로 다운로드하고 아래의 명령을 사용하여 응용 프로그램 루트 디렉토리에 압축 된 tar 파일의 내용을 추출합니다 :
% curl -L -o sqlcipher-for-android.zip https://s3.amazonaws.com/sqlcipher/SQLCipher+for+Android+v3.1.0.zip
% unzip sqlcipher-for-android.zip
우리는 우리의 응용 프로그램의 루트 디렉토리에 다양한 라이브러리와 자산 파일을 통해 복사해야합니다. 다음 명령을 실행 데모 응용 프로그램에 대한
% cp -R SQLCipher\ for\ Android\ v3.1.0/libs/* libs
% cp -R SQLCipher\ for\ Android\ v3.1.0/libs/*assets
파일이 구조 유사하게 나타납니다
통합 시작 이클립스와 choose File -> New -> Android Project
을 메뉴에서. 프로젝트 이름을 지정하고 응용 프로그램 루트 디렉토리를 가리키는 기존 소스에서 프로젝트 작성을 선택하십시오. 다음과 유사해야합니다.
다음은 libs 디렉토리에있는 3 개의 jar 파일을 참조해야합니다. 패키지 탐색기에서 프로젝트 노드를 마우스 오른쪽 버튼으로 클릭하고 Build Path -> "Configure Build Path..."
을 선택하십시오. Libraries 탭을 선택하고 "Add JARs..."
버튼을 누릅니다. commons-codec.jar, guava-r09.jar and sqlcipher.jar
을 선택하십시오. 이 세 항아리를 선택한 후, 화면은 다음과 같이 나타납니다 :
다음으로 우리가 제대로 SQLCipher에 대한 네이티브 라이브러리를 초기화하는 기본 활동의 소스를 수정 한 다음 레코드를 삽입하는 우리의 데이터베이스 파일을 생성합니다. 특히 android.database.sqlite.SQLiteDatabase
대신 net.sqlcipher.database.SQLiteDatabase
의 가져 오기와 SQLiteDatabase.loadLibs(this)
을 호출해야합니다. 다른 데이터베이스 작업을 수행하기 전에 SQLiteDatabase.loadLibs(this)
을 호출해야합니다.
package com.demo.sqlcipher;
import java.io.File;
import net.sqlcipher.database.SQLiteDatabase;
import android.app.Activity;
import android.os.Bundle;
public class HelloSQLCipherActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
InitializeSQLCipher();
}
private void InitializeSQLCipher() {
SQLiteDatabase.loadLibs(this);
File databaseFile = getDatabasePath("demo.db");
databaseFile.mkdirs();
databaseFile.delete();
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null);
database.execSQL("create table t1(a, b)");
database.execSQL("insert into t1(a, b) values(?, ?)", new Object[]{"one for the money",
"two for the show"});
}
}
이제 샘플 응용 프로그램을 에뮬레이터 또는 장치에서 실행할 수 있어야합니다. 안드로이드에 대한
SQLCipher 처음부터 안드로이드 SQLCipher의 소스 코드를 작성 다룰 것
이 튜토리얼 튜토리얼을 구축 할 수 있습니다. 이 튜토리얼은 Android NDK의 개정판 7을 대상으로하며 Linux 또는 OSX 환경에서 복잡한 문제를 해결하기위한 것입니다.
시스템 환경 요구 사항 Android 용 SQLCipher 소스를 빌드하려면 여러 가지 도구가 필요합니다. 빌드 머신에는 Android SDK, Android NDK and the JDK
을 비롯한 여러 개발 키트가 있어야합니다. PATH
에서 사용할 수있는 ANDROID_NDK_ROOT
환경 변수가 필요합니다. 소스 트리를 얻으려면 Git이 필요할 것이다. 당신의 PATH
가 제대로 구성을 확인하려면 다음 명령을 실행 : 당신은 NDK 빌드 당신은 당신의 .bashrc
또는 해당 쉘 설정 파일에 다음을 추가 할 필요가 발견되지 수신하는 경우
% which ndk-build
/Users/nparker/bin/android-ndk/ndk-build
. ~/bin/android-ndk
경로 아래의 안드로이드 NDK의 루트 디렉토리 내 컴퓨터의 위치를 나타냅니다, 그에 따라 조정 :
export ANDROID_NDK_ROOT=~/bin/android-ndk
export PATH=$ANDROID_NDK_ROOT:$PATH
우리는 NDK 툴체인과 상호 작용에 대한 우리의 기본 빌드 도구로 확인 사용합니다.
소스
안드로이드에 대한 SQLCipher의 소스 코드가 Github.com에 공개적으로 유지를 가져옵니다. 우리는 로컬 저장소를 복제하여 시작합니다 :
% cd ~/code
% git clone git://github.com/sqlcipher/android-database-sqlcipher.git
코드를 작성하는 과정은 두 가지 단계로 나뉩니다 구축. 이것이 처음 수행 될 때 우리는 안드로이드 용 SQLCipher가 의존하는 다양한 자식 서브 모듈을 초기화해야합니다. 이것은 모두 Make를 통해 자동화됩니다. 자식 컴파일에 필요한 다양한 서브 모듈을 아래로 당겨 완료되면
% cd android-database-sqlcipher
% make init
, 우리는 빌드 프로세스를 시작할 수 있습니다 :
퍼센트이 프로세스를 완료하는 데 시간이 좀 걸릴 것 합니다. 이 완료되면, 당신은 응용 프로그램의 libs와 디렉토리에 통합에 사용할 수있는 다음과 같은 파일이 있어야합니다
% tree libs
libs
├── armeabi
│ ├── libdatabase_sqlcipher.so
│ ├── libsqlcipher_android.so
│ └── libstlport_shared.so
├── commons-codec.jar
├── guava-r09.jar
└── sqlcipher.jar
현지화 종속성
안드로이드에 대한SQLCipher 중환자 실 프로젝트에서 현지화 된 데이터에 따라 달라집니다. 안드로이드 용 SQLCipher는 가능한 경우 /system/usr/icu directory
에있는 icudt46l.dat
이라는 시스템 제공 ICU 현지화 데이터 파일을 사용하려고 시도합니다. 찾을 수 없으면 Android 용 SQLCipher가 응용 프로그램 자산 디렉토리에있는 icudt46l.zip
파일의 압축을 풀려고 시도합니다. 최적의 플랫폼 호환성을 위해 응용 프로그램에 icudt46.zip
파일을 포함시키는 것이 좋습니다.
참조 : 당신은 바이너리를 발견하는 방법 https://www.zetetic.net/sqlcipher/sqlcipher-for-android/
- 1. Java에서 암호화를 사용하는 방법?
- 2. 암호화에서 암호화를 사용하는 방법
- 3. Sqlite 데이터베이스에서 CONTAINS 키워드를 사용하는 방법
- 4. android sqlite 데이터베이스에서 쿼리를 사용하는 방법
- 5. 데이터베이스에서 JOIN을 사용하는 방법.
- 6. 파일이 SQLCipher 암호화를 사용하는 유효한 SQLite 데이터베이스인지 확인하십시오.
- 7. SQLite 데이터베이스에서 AutoCompleteTextView를 채우는 방법
- 8. sqlite 데이터베이스에서 값을 읽는 방법
- 9. WindowsApplication Sqlite 데이터베이스에서 연결하는 방법
- 10. sqlite 데이터베이스에서 CountTotal을 얻는 방법
- 11. sqlite 데이터베이스에서 데이터를 검색하는 방법
- 12. Base64 암호화를 사용하는 AES
- 13. RSA 암호화를 사용하는 VB.Net
- 14. WinCrypt에서 공개 키 암호화를 생성하고 사용하는 방법
- 15. 자바 카드의 번호에 RSA 암호화를 사용하는 방법
- 16. s3cmd : 서버 측 암호화를 사용하는 방법?
- 17. 안드로이드 : SQLite 데이터베이스에서 로딩
- 18. android sqlite 데이터베이스에서 쿼리 결과를 반환하는 방법?
- 19. 여러 SQLite 데이터베이스에서 모든 열을 선택하는 방법
- 20. RSA 암호화를 사용하는 암호 해독
- 21. SQLite 데이터베이스에서 작업 삭제
- 22. 레일에 sqlite 데이터베이스에서 연결
- 23. SQLite 데이터베이스에서 읽기 안드로이드
- 24. sqlite 데이터베이스에서 목록보기를 만듭니다
- 25. SQLite 데이터베이스에서 데이터 검색
- 26. 안드로이드의 sqlite 데이터베이스에서 onUpgrade
- 27. sqlite 데이터베이스에서 행 검색
- 28. SQLite 데이터베이스에서 중복 삭제
- 29. sqlite 데이터베이스에서 데이터에 액세스
- 30. SQLite 데이터베이스에서 재귀가 잠김
이 정확히 규명 할 수 있습니까? 나는 당신이 "여기"에서 찾을 수 있다고 말하는 링크를 보지 못했고 Zetetic 페이지에서 바이너리 다운로드로 갈 때 나는 https://bintray.com/bintray/jcenter/net.zetetic%3Aandroid에서 바람을 다. -database-sqlcipher/3.3.1-2 /보기에 "이 패키지에 대해 직접 다운로드가 선택되지 않았습니다." 하나를 선택하는 방법을 알아낼 수 없습니다. – Michael
btw, 링크가 3.1.0에서 훌륭하게 작동하지만, 순진하게 3.3.1 또는 3.3.1-2로 바꾸면 실패합니다. – Michael