android:将大字符串转换为字节并通过网络发送是否安全?
android: Is it safe practice to convert a large string to bytes and send across the network?
我得到一个文件,然后将其转换为字符串并替换一些单词。
我用这个字符串 运行 以下内容:
com.hierynomus.smbj.share.File remoteSmbjFile = share.openFile(fileName, EnumSet.of(AccessMask.GENERIC_WRITE), null, s, null, null);
byte[] myFile= template.getBytes("UTF-8");
ByteArrayInputStream bs = new ByteArrayInputStream(myFile);
try (OutputStream outputStream = remoteSmbjFile.getOutputStream();) {
byte[] buffer = new byte[1024];
int length;
while ((length = bs.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
}
该文件是在网络位置创建的并且没有问题(没有问题)。
文件本身是一个 .xml 类型,大小在 2-10 MB 之间。
我正在使用 xml 文件类型在 word 中打开此文件,如果有一个字符关闭,文件将损坏。
我只是担心由于文件大小,此方法会导致损坏。
上述方法是否安全,还有其他我可以采用的方法吗?
Is it safe practice to convert a large string to bytes and send across the network?
视情况而定。 (没有什么是绝对安全的。永远。)
I'm just worried due to the files size this method will cause a corruption.
大文件不会导致损坏。
但是,在两种情况下大文件可能会出现问题:
如果文件的接收者不能或不愿意接受超过一定大小的文件,那么它可能会截断文件。如果没有将此报告给发件人,则说明您有潜在的损坏来源。
网络数据包通常使用简单的基于 CRC 的错误检测机制来检测在传输过程中因网络错误而损坏的数据包。有可能(概率非常低1)未检测到多位损坏。如果您在 TCP 流的顶部实现文件传输(例如),文件损坏的可能性非常小。
1 - 实际错误率很难预测,但如果您正在传输数 TB 的数据,由于未检测到的网络错误而导致损坏的可能性会变得很大。
Is the above method safe practice are there any other approaches I could take?
鉴于您无法避免上述任何一种情况,您需要一种方法来绝对确保大文件传输没有损坏文件。通常这是通过以下方式完成的:
- 正在检查文件大小...仅检测截断
- 正在计算和比较文件哈希/校验和。如果您使用 N 位校验和,未检测到 随机损坏的几率是 2^N 分之一。
请注意,以上内容与文件类型无关。
我知道有一些标准方法可以在 XML 文件的内容上放置强数字签名。检查这样的签名也可以用来检测意外损坏。
我得到一个文件,然后将其转换为字符串并替换一些单词。
我用这个字符串 运行 以下内容:
com.hierynomus.smbj.share.File remoteSmbjFile = share.openFile(fileName, EnumSet.of(AccessMask.GENERIC_WRITE), null, s, null, null);
byte[] myFile= template.getBytes("UTF-8");
ByteArrayInputStream bs = new ByteArrayInputStream(myFile);
try (OutputStream outputStream = remoteSmbjFile.getOutputStream();) {
byte[] buffer = new byte[1024];
int length;
while ((length = bs.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
}
该文件是在网络位置创建的并且没有问题(没有问题)。 文件本身是一个 .xml 类型,大小在 2-10 MB 之间。
我正在使用 xml 文件类型在 word 中打开此文件,如果有一个字符关闭,文件将损坏。
我只是担心由于文件大小,此方法会导致损坏。
上述方法是否安全,还有其他我可以采用的方法吗?
Is it safe practice to convert a large string to bytes and send across the network?
视情况而定。 (没有什么是绝对安全的。永远。)
I'm just worried due to the files size this method will cause a corruption.
大文件不会导致损坏。
但是,在两种情况下大文件可能会出现问题:
如果文件的接收者不能或不愿意接受超过一定大小的文件,那么它可能会截断文件。如果没有将此报告给发件人,则说明您有潜在的损坏来源。
网络数据包通常使用简单的基于 CRC 的错误检测机制来检测在传输过程中因网络错误而损坏的数据包。有可能(概率非常低1)未检测到多位损坏。如果您在 TCP 流的顶部实现文件传输(例如),文件损坏的可能性非常小。
1 - 实际错误率很难预测,但如果您正在传输数 TB 的数据,由于未检测到的网络错误而导致损坏的可能性会变得很大。
Is the above method safe practice are there any other approaches I could take?
鉴于您无法避免上述任何一种情况,您需要一种方法来绝对确保大文件传输没有损坏文件。通常这是通过以下方式完成的:
- 正在检查文件大小...仅检测截断
- 正在计算和比较文件哈希/校验和。如果您使用 N 位校验和,未检测到 随机损坏的几率是 2^N 分之一。
请注意,以上内容与文件类型无关。
我知道有一些标准方法可以在 XML 文件的内容上放置强数字签名。检查这样的签名也可以用来检测意外损坏。