【问题标题】:Encoding/Decoding text in ORMLITE using Base64使用 Base64 在 ORMLITE 中编码/解码文本
【发布时间】:2015-05-04 08:06:04
【问题描述】:

我正在开发 android 应用程序,我想在其中加密使用 ormlite 存储的文本,因此如果外部的任何人获取 DB 文件,他将无法在不解密的情况下读取它。我主要关心的是使用 base64 加密数据,当我想读取数据时,它应该解密它。我已经从 base64 的链接中阅读了一些示例代码,请建议我在将文本保存到数据库之前加密文本的方法,并在检索时解密它。

// Sending side
byte[] data = text.getBytes("UTF-8");
String base64 = Base64.encodeToString(data, Base64.DEFAULT);

// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");

【问题讨论】:

  • 加密和编码有很大的区别。请确保您的数据不敏感。查看这篇文章了解更多加密细节stackoverflow.com/questions/1205135/…
  • 实际上我正在寻找任何机制来加密和解密我在 ormlite 数据库中的文本。我只需要制作一些可以在数据库中加密我的数据的东西,并且在接收时它应该解密它。
  • 是的,编码和加密的区别在于:sombody 总是可以解码你的字符串,所以它不安全。带加密。另一个人将需要一个加密密钥来解密它。
  • @Stefan 感谢您的回复。您能否建议我在android中对文本进行加密和解密的任何链接或示例代码。
  • Base64 是一种相当弱的“加密”,只是让不精通的用户无法读取数据。其余的你都做对了。

标签: java base64 encode ormlite


【解决方案1】:

您可以使用此代码进行加密和解密。

我在这里使用 3DES 加密方案。希望对你有帮助。

    public PasswordEncryption_TrippleDES() throws Exception {
        myEncryptionKey =  //your encryption key
        myEncryptionScheme = DESEDE_ENCRYPTION_SCHEME;
        arrayBytes = myEncryptionKey.getBytes(UNICODE_FORMAT);
        ks = new DESedeKeySpec(arrayBytes);
        skf = SecretKeyFactory.getInstance(myEncryptionScheme);
        cipher = Cipher.getInstance(myEncryptionScheme);
        key = skf.generateSecret(ks);
    }

    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);
            encryptedString = new String(Base64.encodeBase64(encryptedText));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return encryptedString;
    }

    public String decrypt(String encryptedString) {
        String decryptedText=null;
        try {
            cipher.init(Cipher.DECRYPT_MODE, key);
            byte[] encryptedText = Base64.decodeBase64(encryptedString);
            byte[] plainText = cipher.doFinal(encryptedText);
            decryptedText= new String(plainText);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return decryptedText;
    }

【讨论】:

    猜你喜欢
    • 2018-12-27
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多