cwe*_*ton 32 java hash base64 filenames encoding
Base64编码是否可以安全地用于Windows和Linux系统上的文件名?根据我的研究,我发现用/结果替换结果的所有字符-或者_应该解决任何问题.
任何人都可以提供更多细节吗?
目前在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('/','_');
Run Code Online (Sandbox Code Playgroud)
Ale*_*kov 34
修改的Base64(时/,=和+被替换)安全地创建名字,但不保证逆变换由于许多文件系统和URL不区分大小写.
Base64是大小写敏感的,所以它不会保证不区分大小写的文件系统的情况下,1对1的映射(所有Windows文件系统,而忽略POSIX子系统的情况下).大多数网址也不区分大小写,防止1对1映射.
我想在这种情况下使用Base32 - 你会得到的名字有点长,但Base32编码的值是100%安全的文件/ URI使用无需更换任何字符,甚至在环境敏感的情况下,保证了1对1的映射(FAT/Win32 NTFS访问).
不幸的是,在框架中通常没有对此编码的内置支持.另一方面,编写代码或在线查找相对简单.
http://en.wikipedia.org/wiki/Base32.
| 归档时间: |
|
| 查看次数: |
22452 次 |
| 最近记录: |