2016-09-27 84 views
0

我有一个基地64编码密钥文件。如果我用文本编辑器打开它,我看到4条线路是这样的: Public key 然后我将文本复制并粘贴到Android Studio中,我看到的符号“\ n”时产生如下图所示: Public key in Android Studio我可以从base 64编码密钥文件中删除符号新行吗?

这耻骨键不起作用。所以我尝试过:

  1. 删除所有“\ n”符号。仍然不起作用。

  2. 用空格“”替换“\ n”符号。再次不起作用。

你能告诉我我错在哪里吗?

+0

如果它是一个固定的静态字符串,那么你为什么要加入“\ n”只是简单地删除/从字符串中删除。 – SilentKiller

+0

我想他说AS自动生成了这个。 – Alex

+0

你能告诉我们你的密钥文件的hexdump吗? – user1506104

回答

1

与其将文件内容粘贴到字符串中,为什么不将文件本身复制到assets文件夹中。例如:

public String readPublicKeyFromFile() { 

    String publicKeyString; = ""; 

    try { 
     InputStream is = getAssets().open("public_key.txt"); 

     byte[] buffer = new byte[size]; 
     is.read(buffer); 
     is.close(); 

     // Convert the buffer into a string. 
     return new String(buffer); 

    } catch (IOException e) { 
     throw new RuntimeException(e); 
    } 

    return null; 
} 
+0

为什么复杂这样一个简单的事情? – SilentKiller

+0

我同意你的意见。不过,我认为他说他试图删除'\ n'字符。另外,我认为将密钥放入单独的文件以防万一它们改变是更好的封装。只是个人喜好。 – Alex

+0

亚我也同意你@亚历克斯。但是如果我们的数据是安全的或者这些数据不需要披露的话。并且它已经是一个64位的字符串(加密字符串),所以不会有任何伤害(根据我的说法)。 – SilentKiller

1

它的android studio console字符限制它显示多行中的长字符串。

  1. 最好的方法是在任何文本编辑器(记事本)中复制该字符串,并将其设置为单行字符串,然后将其粘贴到工作室。
  2. 另一种方法是从字符串中删除'\ n'字符,它将是单行字符串。

例如

private static final String = "abcdefgh" + 
    "ijklmnop" + 
    "qrstuvwxyz"; 

只是从你的字符串中删除'\ n'字符。

0
  1. 如果您创建“publickey.txt”(base64)文件,只需使用“Base64.NO_WRAP”标志来创建文件。该标志不允许“\ n”字符。

  2. 默认情况下,它将采用“Base64.DEFAULT”标志,因此“\ n”后面的每64个字符将自动添加。

    // for encoding the String with out \n 
    
        String base64Str=Base64.encode(your_string,Base64.NO_WRAP); 
    
    // for decoding 
    byte[] resByte=Base64.decode(base64Str,Base64.NO_WRAP); 
    
    // convert into String 
        String resStr=new String(resByte,"UTF-8"); 
    
相关问题