我的问题是如何保护我的应用程序数据库文件使用加密算法,如果我使用硬编码密钥,然后反编译后它也将accessible.if设备是根源,那么任何人都可以访问我数据库文件,所以我想保护我的数据库,任何人都无法访问或阅读。在此先感谢如何加密和解密我的应用程序数据库在Android中
3
A
回答
2
package com.kushal.utils;
import java.security.spec.KeySpec;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class DESedeEncryption {
private static final String UNICODE_FORMAT = "UTF8";
public static final String DESEDE_ENCRYPTION_SCHEME = "DESede";
private KeySpec myKeySpec;
private SecretKeyFactory mySecretKeyFactory;
private Cipher cipher;
byte[] keyAsBytes;
private String myEncryptionKey;
private String myEncryptionScheme;
SecretKey key;
public DESedeEncryption() throws Exception
{
myEncryptionKey = "ThisIsSecretEncryptionKey";
myEncryptionScheme = DESEDE_ENCRYPTION_SCHEME;
keyAsBytes = myEncryptionKey.getBytes(UNICODE_FORMAT);
myKeySpec = new DESedeKeySpec(keyAsBytes);
mySecretKeyFactory = SecretKeyFactory.getInstance(myEncryptionScheme);
cipher = Cipher.getInstance(myEncryptionScheme);
key = mySecretKeyFactory.generateSecret(myKeySpec);
}
/**
* Method To Encrypt The String
*/
public String encrypt(String unencryptedString) {
String encryptedString = null;
try {
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] plainText = unencryptedString.getBytes(UNICODE_FORMAT);
byte[] encryptedText = cipher.doFinal(plainText);
BASE64Encoder base64encoder = new BASE64Encoder();
encryptedString = base64encoder.encode(encryptedText);
} catch (Exception e) {
e.printStackTrace();
}
return encryptedString;
}
/**
* Method To Decrypt An Ecrypted String
*/
public String decrypt(String encryptedString) {
String decryptedText=null;
try {
cipher.init(Cipher.DECRYPT_MODE, key);
BASE64Decoder base64decoder = new BASE64Decoder();
byte[] encryptedText = base64decoder.decodeBuffer(encryptedString);
byte[] plainText = cipher.doFinal(encryptedText);
decryptedText= bytes2String(plainText);
} catch (Exception e) {
e.printStackTrace();
}
return decryptedText;
}
/**
* Returns String From An Array Of Bytes
*/
private static String bytes2String(byte[] bytes) {
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < bytes.length; i++) {
stringBuffer.append((char) bytes[i]);
}
return stringBuffer.toString();
}
/**
* Testing The DESede Encryption And Decryption Technique
*/
public static void main(String args []) throws Exception
{
DESedeEncryption myEncryptor= new DESedeEncryption();
String stringToEncrypt="Sanjaal.com";
String encrypted=myEncryptor.encrypt(stringToEncrypt);
String decrypted=myEncryptor.decrypt(encrypted);
System.out.println("String To Encrypt: "+stringToEncrypt);
System.out.println("Encrypted Value :" + encrypted);
System.out.println("Decrypted Value :"+decrypted);
}
}
output:
String To Encrypt: Sanjaal.com
Encrypted Value :aArhqI25Y1SkYrdv9gxYDQ==
Decrypted Value :Sanjaal.com
http://sanjaal.com/java/189/java-encryption/tutorial-encryption-and-decryption-using-desede-triple-des-in-java/
0
使用sqlite cipher
加密您的数据库。并将密钥存储在parts.and在运行时生成您的密钥。你不能阻止任何人解除你的应用程序的编译。你所能做的只是让解编译器很难理解你的算法。你可以尝试在你的应用程序混淆。
使用dexGuard来加密您的应用程序的字符串。
相关问题
- 1. 如何在Ruby和Android应用程序之间加密和解密数据?
- 2. Android在应用程序中加密和解密资源文件
- 3. 如何加密android应用程序的SQlite数据库?
- 4. 在Android应用程序中使用sqlcipher保护用于解密加密数据库的密钥
- 5. 在iphone应用程序和WebService中使用加密和解密
- 6. Play + Slick + HikariCP应用程序中的加密数据库密码
- 7. 加密 - 解密,数据库
- 8. 如何在Perl CGI程序中加密和解密密码?
- 9. 在Android中使用SQLCipher加密/解密现有数据库
- 10. 使用FileInputStream/Cipher在Android中加密/解密数据库文件
- 11. 如何在J2ME应用程序中加密/解密网址?
- 12. 数据库加密和数据库解密使用C#代码
- 13. 如何加密/解密SQLite数据库中的数据?
- 14. 如何解密和加密Java程序的Joomla用户密码?
- 15. 用密钥加密和解密数据
- 16. 加密/解密数据到数据库
- 17. 加密和解密数据库中的所有数据
- 18. Android如何对数据库进行加密/解密
- 19. 我如何使用PEM加密和解密数据 - OPENSSL,C,BIO
- 20. 加密和解密OSX中的数据
- 21. 加密和解密应用程序密钥
- 22. 如何在MVC3/EF应用程序中的数据库级别加密数据?
- 23. 我应该如何在PHP应用程序中加密我的数据?
- 24. 加密/解密存储在精简数据库中的密码
- 25. 如何在android中加密和解密密码
- 26. 在android中加密解密
- 27. 在Sqlite数据库中加密和解密?
- 28. 在Android中加密数据并使用AESCrypt在Ruby中解密
- 29. 如何使用数据库主密钥(DMK)加密/解密数据?
- 30. Java Swing应用程序和Postgres数据库之间的密码加密
我认为有些公司正试图解决移动应用程序完整性解决方案的问题。例如:http://www.arxan.com/ –
请参阅:http://blogs.msdn.com/b/ericlippert/archive/2011/09/27/keep-it-secret-keep-it- safe.aspx – ntoskrnl