java - 文本到二进制转换并写入文件。请帮助

标签 java file binary

我正在尝试将纯文本数据转换为二进制格式,以便它变得不可编辑。 数据需要写入文件。如果我在控制台窗口中打印它,则转换有效,并且无法读取原始文本。 但是,当将其写入文件时,会出现相同的原始文本。 如何将此二进制数据写入文件而不对其进行加密,但使其不可读?

此文件稍后需要由另一个接受二进制数据的第三方工具进行处理。这就是为什么我无法使用自己的算法对其进行加密的原因。

这是我的代码:

import java.io.*;
import java.lang.*;
public class convert{
public static void main( String args[] ){
String s= "This is text";
try{
File file= new File("test.php");
file.createNewFile();
FileWriter fw= new FileWriter( file.getName(), true );
BufferedWriter bw= new BufferedWriter( fw );

byte[] b= s.getBytes();
for(int x=0; x<b.length; x++){
byte c=b[x];
bw.write( c );
System.out.println(c);
}

bw.close();
}catch( Exception e ){ e.printStackTrace(); }
}//main
}//class

最佳答案

纯文本本身就是一种二进制格式,其中每个字节都被解释为一个字符(或其他变体,具体取决于假定或指定的编码,例如 UTF-8、UTF-16...)。

这意味着如果您将 ASCII 字符作为字节写入文件,它将看起来相同并且任何人都可以读取。事实上,许多二进制文件格式仍然将字符串保存为普通字节,这意味着它们可以在十六进制编辑器中打开时读取,如下所示: hex editor

要使其不可读,您需要将其序列化为某种不可读的通用格式。遗憾的是,Java 中的普通序列化是可读的,但您可以检查 here有关如何模糊它的建议。您还可以使用 ZIP 或类似的压缩算法。

另一种更古怪的方法是将所有字符字节移动某个已知值。这将导致他们变成不同的角色并且变得不可读。这可以看作是一个非常基本的Caesar Chipher .

但最终,重要的是您的目标程序能够读取哪种格式。

关于java - 文本到二进制转换并写入文件。请帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15016608/

相关文章:

java - 有没有办法以动态方式映射具有相同表名的多个数据库?

java - 在 Jira 插件的速度模板方面需要一些帮助

c# - 文件名有两个反斜杠 C#

node.js - 如何将 "binary"编码字符串解码为原始二进制缓冲区?

java - 如何在这个 MongoDB 连接案例中注入(inject)一个 bean?

java - Jenkins Windows Slave : No compiler is provided in this environment. 也许您正在 JRE 而不是 JDK 上运行

perl - 删除给定目录中的子目录和文件

java - 为什么我正在编写的文件中多了一行?

php - Python 相当于 php 包

encoding - 哪种二维条码具有最高的数据容量/密度