我已经看到了很多关于如何将字节数组转换为字符串的例子,但是当我开始使用加密时,这会给我带来许多问题。出于好奇,有没有人知道将二进制数据直接读到字符串的方法。
执行此操作的VB6方法是:
Dim S as string
s = space$(lof(1))
Get #1,, s
close #1
如果没有,我已经看到了将字符串转换为字节数组的不同方法,返回到字符串,包括base64,UTF8,最后 - 通过char通过char并将其转换为字节。
我的目标很简单。我想将二进制数据检索到字符串,加密此字符串,最后将所有字符串数据写回新的二进制文件。
您认为哪种方法是最快的方法?
答案 0 :(得分:3)
如果您只是想加密二进制数据,那么您应该完全避免使用字符串。如果您正在加密属于字符串的文本信息,那么您应该关心编码(UTF-8和朋友) - 尽管读取数据,将其放入字符串,加密字符串然后写出数据似乎是一个奇怪的要求。
答案 1 :(得分:1)
您声明要从byte[]
转到string
到byte[]
;首先,请注意Encoding
(例如UTF-8) 不 是一个选项;仅在将字符串转换为二进制字符串时才适用。差异很重要:它实际上需要文本数据才能发挥作用,并且任意byte[]
不能被视为文本数据。这也排除了你的“直接写入字符串”,原因类似(不限于:代理等)。
将二进制编码为字符串的正确方法是base-64,base-16等; base-64是这里最有效的通用编码。
然而;大多数加密代码适用于二进制,而不是文本。如果您有文本加密API,在大多数情况下,首先要做的是使用UTF-8等编码将其转换为二进制文件。
所以:检查一下你没有错过直接二进制API选项。