Android和Java - 无法编码 - 加密 - 解码 - 解密字符串

时间:2016-06-17 21:49:11

标签: java android encryption

我的桌面应用程序(用Java编写)加密Android应用程序的文件。

整个文件中的字符串部分:

...“一个kerékpár(vagy bicikli)egy emberierővelhajtottkétkerekűjármű.19.századikifejlesztése”......

从文件中读取:

FileInputStream is = new FileInputStream("cycles.txt");
StringBuilder sb = new StringBuilder();
Charset inputCharset = Charset.forName("ISO-8859-1");
BufferedReader br = new BufferedReader(new InputStreamReader(is, inputCharset));
String read;

while((read=br.readLine()) != null) {
    sb.append(read); 
}

读完整个文件后,我加密了它:

String text = sb.toString();
Encrypter er = new Encrypter();
byte[] bEncrypt = er.encrypt(text);

加密后我将其编码为base64:

bEncrypt = Base64.getEncoder().encode(bEncrypt);
text = new String(bEncrypt, "ISO-8859-1");

此后,文件将保存在我的电脑磁盘上:

File file = new File(System.getProperty("user.dir") + "/files/encr_cycles.txt");
try {
      PrintWriter pr = new PrintWriter(new FileWriter(file));
      pr.print(text);
      pr.close();
   } catch (IOException e) {
      e.printStackTrace();
   }

从Android应用程序中我读到了文件:

BufferedReader reader = new BufferedReader(new InputStreamReader(getAssets().open("files/encr_cycles.txt"), "ISO-8859-1"));

// Read line by line
String mLine;
StringBuilder sb = new StringBuilder();
while ((mLine = reader.readLine()) != null) {
   sb.append(mLine);
}

解码和解密:

byte[] dec = Base64.decode(encryptedText, Base64.DEFAULT);
byte[] data= new Decipher().doFinal(dec);
String text= new String(data, "ISO-8859-1");

给定的文字是:

一个kerékpár(vagy bicikli)egy emberi er?velhajtottkétkerek?járm?。19.századikifejlesztése

注意“?”在字符串?某些字符未正确解码。

Q1:我做错了什么?

Q2:我使用了错误的字符集吗?

1 个答案:

答案 0 :(得分:0)

我将字符集更改为" UTF-8"遍布各种应用程序(桌面和移动)。问题出在根文件上。该文件未保存在" UTF-8"。

我在日食中做了什么:

  1. 在eclipse中打开根文件(.txt)(在编辑器中拖放文件)
  2. 在文件中插入字符串或进行一些更改(空白字符)(在我的情况下是无法编码的字符串)
  3. 按保存(CTLR + S),会出现一个对话框提示:保存为UTF-8
  4. 删除您的行
  5. 再次保存
  6. 另一种解决方案是在编辑时自动保存文件:

    Window > Preferences > General > Content Types, set UTF-8 as the default 
    encoding for all content types.
    Window > Preferences > General > Workspace, set "Text file encoding" to "Other : UTF-8".
    

    来源:How to support UTF-8 encoding in Eclipse