如何将 MD5 哈希转换为字符串并将其用作文件名
我正在获取图像文件的 MD5 哈希值,并且想使用该哈希值作为文件名。
如何将哈希值转换为有效文件名的字符串?
编辑: toString()
只是给出“System.Byte[]”
I am taking the MD5 hash of an image file and I want to use the hash as a filename.
How do I convert the hash to a string that is valid filename?
EDIT: toString()
just gives "System.Byte[]"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
怎么样:
如果您喜欢不带连字符的较短文件名,那么您可以使用:
How about this:
If you prefer a shorter filename without hyphens then you can just use:
System.Convert.ToBase64String
作为评论者指出——正常的 Base 64 编码可以包含“/”字符,这显然会成为文件名的问题。 但是,还有其他可用的字符,例如下划线 - 只需将所有“/”替换为下划线即可。
System.Convert.ToBase64String
As a commenter pointed out -- normal base 64 encoding can contain a '/' character, which obivously will be a problem with filenames. However, there are other characters that are usable, such as an underscore - just replace all the '/' with an underscore.
尝试这个:
Try this:
这可能是最安全的文件名。 你总是会得到一个十六进制字符串,而不必担心 / 或 + 等。
This is probably the safest for file names. You always get a hex string and never worry about / or +, etc.
试试这个:
或者
Try this:
or
从技术上讲,如果这是 Windows,则使用 Base64 是不好的,文件名不区分大小写(至少在资源管理器视图中)..但在 Base64 中,“a”与“A”不同,这意味着也许不太可能,但最终会获得更高的速率 更好的替代方案是像 bitconverter 类那样的十六进制
,或者如果您可以使用 base32 编码(在从 Base64 和 Base32 中删除填充后,在 128 位的情况下,将为您提供相似长度的文件名)。
Technically using Base64 is bad if this is Windows, filenames are case insensitive (at least in explorers view).. but in base64, 'a' is different to 'A', this means that perhaps unlikely but you end up with even higher rate of collision..
A better alternative is hexadecimal like the bitconverter class, or if you can- use base32 encoding (which after removing the padding from both base64 and base32, and in the case of 128bit, will give you similar length filenames).
尝试 MD5 的 Base32 哈希。 它提供文件名安全的不区分大小写的字符串。
Try Base32 hash of MD5. It gives filename-safe case insensitive strings.