나는 이제 막 시작한 이래로 Android 앱 (학습용)에 대한 아이디어를 얻었습니다. 기본적으로 기억해야 할 암호를 "저장/저장"할 수있는 앱입니다. 그러나 SQlite (저장소 중앙값)를 통해 암호화/해독합니다. Android/SQlite3는 어떤 유형의 암호화를 할 수 있습니까?Android SQlite 비밀번호 암호화?
4
A
답변
3
아마도 Android의 javax.crypto 패키지를 사용하고 암호화 된 데이터를 sqlite3 행에 저장하려고합니다.
대칭 암호화를 제공하므로 사용자가 암호를 입력하여 암호로 암호화 된 데이터베이스의 내용을 잠금 해제 할 수 있습니다.
4
암호화 된 암호를 인코딩하기 위해 apache commons Base64를 사용합니다. db에 Blob로 암호를 저장하게됩니다.
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import org.apache.commons.net.util.Base64;
private static SecretKey key;
try {
byte[] secretBytes = "secret key".getBytes("UTF8");
DESKeySpec keySpec = new DESKeySpec(secretBytes);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
key = keyFactory.generateSecret(keySpec);
} catch (Exception e) {
Log.e(Flashum.LOG_TAG, "DatabaseHelper " + e.toString());
}
public byte[] encryptPassword(String userpw) {
try {
byte[] cleartext = userpw.getBytes("UTF8");
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] clearBytes = cipher.doFinal(cleartext);
byte[] encryptedPwd = Base64.encodeBase64(clearBytes);
return encryptedPwd;
} catch (Exception e) {
Log.e(Flashum.LOG_TAG, "DatabaseHelper " + e.toString());
}
return null;
}
public String decryptPassword(byte[] userpw) {
String pw = "";
try {
byte[] encrypedPwdBytes = Base64.decodeBase64(userpw);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] plainTextPwdBytes = cipher.doFinal(encrypedPwdBytes);
pw = new String(plainTextPwdBytes, "UTF8");
} catch (Exception e) {
Log.e(Flashum.LOG_TAG, "DatabaseHelper " + e.toString());
}
return pw;
}
+2
DES 알고리즘은 2001 년에 폐기되었으며, AES (Advanced Encryption Standard)로 바뀌 었습니다. 왜냐하면 bruteforce 공격에 취약하기 때문입니다. 너는 그것을 사용하면 안된다. – Benedictus
관련 문제
- 1. 비밀번호 암호화
- 2. 비밀번호 암호화
- 3. Android 앱에서 Sqlite db 암호화
- 4. 아이폰 앱 비밀번호 암호화
- 5. DES로 암호화 및 비밀번호
- 6. Jackrabbit의 비밀번호 암호화
- 7. Symfony 2 : 비밀번호 암호화 문제
- 8. java에서 php로 비밀번호 암호화 변환
- 9. WinForms app.config, .NET에서 비밀번호 암호화
- 10. 서버 비밀번호 암호화 속성 찾기
- 11. sqlite 데이터 파일 암호화
- 12. Java -> LDAP 계정 비밀번호 암호화
- 13. Oracle Weblogic의 비밀번호 암호화 (SHA1) 10.3.2
- 14. iPhone SQLite 암호 필드 암호화
- 15. C#에서 SQLite 데이터베이스 암호화
- 16. iOS에서 SQLite 데이터베이스 파일 암호화
- 17. SQLite & Android
- 18. 비밀번호 저장
- 19. Android - SD 카드 콘텐츠 암호화/암호화
- 20. Android 설정 암호화
- 21. Android 외부 저장소 암호화
- 22. Android 기기의 암호화
- 23. Android SDK의 문자열 암호화
- 24. android SqLite AutoCompleteTextView
- 25. Android 업데이트 sqlite 테이블
- 26. sqlite 데이터베이스 android
- 27. SQLite in android
- 28. Android 확장 목록 Sqlite
- 29. SQLite 배터리 소모 - android
- 30. SQLite Android 문제
Windows에서 이것을 해독 할 수 있습니까? 이 sqlite를 Windows에 복사하고 해독합니다. 하지만 어느 누구도 중간에 읽지 않기를 원합니다. –