当前位置: 首页 > 面试题库 >

Base64编码对文件名安全吗?

臧威
2023-03-14
问题内容

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。



 类似资料:
  • 不执行该作业。 我试着用: 我真的不知道如何处理这件事。 更新: 然后我将它从DB中提取为$data。

  • 介绍 Base64编码是用64(2的6次方)个ASCII字符来表示256(2的8次方)个ASCII字符,也就是三位二进制数组经过编码后变为四位的ASCII字符显示,长度比原来增加1/3。 使用 String a = "伦家是一个非常长的字符串"; //5Lym5a625piv5LiA5Liq6Z2e5bi46ZW/55qE5a2X56ym5Liy String encode = Base64.en

  • Java为URL编码字符串提供了类。但是将密码存储为字符串被认为是不安全的。通过输出流通过POST发送密码的代码是否足够安全? 一方面,它在使用字符串。另一方面,这些字符串只有1个字符长,编码后在概念上是相同的。而且,在我看来,这可能会在多字节字符上失败。攻击者是否能够在内存中找到这些1-char字符串并重建原始密码?有没有更好的办法做到这一点?

  • 问题内容: 我正在使用32位Oracle Java 1.6.0在x86_64 CentOS 5.7上运行tomcat 5.5。 Tomcat使用的JVM进程具有6421 pid。Tomcat运行正常。 运行时失败,并显示: 为了获得任何合理的输出,我需要使用force选项: 该 问题 是: 错误消息 “知名文件不安全” 是什么意思? 什么是“知名”文件? 为什么/何时在没有强制选项的情况下命令不起

  • 问题内容: 这是我的代码,我不明白为什么解码功能不起作用。 请少有洞察力会很棒。 它给了我:[解码错误-输出不是utf-8] [解码错误-输出不是utf-8] 问题答案: 返回 最大 长度。 此长度对于调整缓冲区大小很有用,但是不会写入缓冲区的一部分,因此将不是有效的UTF-8。 您只需要使用函数返回的实际写入长度即可。