.net - Base64 编码替代下划线

我们使用文件系统/url 安全的 base64 编码变体,这样:

"=" replaced with ""  
"+" replaced with "-"  
"/" replaced with "_"  

我们现在使用的 Azure Blob 存储不允许在容器名称中使用“_”。

我们正在对Guid进行base64编码。如果我用“0”替换下划线,我是否有冲突的风险?

更新

不知道为什么投反对票。但需要澄清一下。

为什么不直接使用 Guid?

  1. Guid 是我的应用程序中实体的 ID。由于路径是公共(public)的,我不太喜欢公开 Id,因此我要对其进行编码。
  2. 我想要更短、更友好的路径。与下面的评论之一相反,base 64 编码并不更长:

    指南:5b263cdd-2bc2-485d-83d4-81b96930dc5a
    Base64 编码:3TwmW8IrXUiD1IG5aTDcWg==(删除 == 后更短)

(另一个)更新

似乎对于我想要实现的目标有些困惑(对此深感抱歉)。这是简短版本。

  • 我有一个 Guid 来代表我的应用程序中的一个实体。
  • 我需要为该实体创建一个可公开访问的目录(通过 一个网址)。
  • 我不想使用 Guid 作为目录名称,原因如下 多于。
  • 我之前曾在 SO 上询问过如何才能生成一个更友好的人 寻找保证唯一性且不会暴露的 URL 原始指南。建议采用 Base64 编码。
  • 直到最近我们需要使用 Azure blob 时,这一切都运行良好 storage,其目录中不允许有下划线“_” (容器)名称。

这就是我现在的位置。

最佳答案

只需在 base16 中“编码”GUID 即可。它使用的唯一字符是 0123456789ABCDEF,这对于大多数用途来说应该是安全的。

var encoded = guid.ToString("N");

https://stackoverflow.com/questions/6857925/

相关文章:

ruby-on-rails-3 - 从 Rails 中的模型获取图像路径

java - 在这种情况下应该使用哪个集合?

sql - ManyToManyField 中 Django 中对象子集的不同值

r - 分成3个字符长度

image - 禁用从 Canvas 下载图像

dependency-injection - 为什么用这么多术语来表达同样的事情? IoC 和 DI

mobile - 移动客户端的 websockets

delphi - 什么是重置(句柄,1)?

android - 如何在小部件中使用 ListView ?

c# - BinaryWriter 问题 - "code adds some byte betwee