Base64编码对文件名安全吗?
Windows和Linux系统上的文件名可以安全使用Base64编码吗?从我的研究中,我发现/
用-
或替换结果的所有字符都_
可以解决任何问题。
谁能提供更多详细信息?
当前在Java中,我正在使用以下代码:
MessageDigest md5Digest = MessageDigest.getInstance("MD5");md5Digest.reset();
md5Digest.update(plainText.getBytes());
byte[] digest = md5Digest.digest();
BASE64Encoder encoder = new BASE64Encoder();
hash = encoder.encode(digest);
hash.replace('/','_');
回答:
修改的Base64(时/
,=
和+
被替换)安全地创建名字,但不保证逆变换由于许多文件系统和URL不区分大小写。
Base64区分大小写,因此在不区分大小写的文件系统(所有Windows文件系统,忽略POSIX子系统的大小写)的情况下,它不能保证一对一映射。大多数网址也不区分大小写,从而阻止了一对一映射。
在这种情况下,我将使用Base32-您会得到更长的名称,但是Base32编码的值对于文件/
uri使用是100%安全的,而无需替换任何字符,即使在不敏感的环境下(FAT),也可以确保一对一映射/ Win32 NTFS访问)。
不幸的是,框架中通常没有对此编码的内置支持。另一方面,编写自己的代码或在线查找代码相对简单。
http://en.wikipedia.org/wiki/Base32。
以上是 Base64编码对文件名安全吗? 的全部内容, 来源链接: utcz.com/qa/417761.html