We’re using a file system/url safe variation of base64 encoding such that:
"=" replaced with ""
"+" replaced with "-"
"/" replaced with "_"
We are now using Azure blob storage that does not allow use of “_” within container names.
We are base64 encoding a Guid. If I was to replace underscore with say a “0” am I at risk of collisions?
Update
Not sure why the downvote. But to clarify.
Why not just use a Guid?
- The Guid is the id of an entity within my application. Since the paths are public, I don’t really like exposing the Id, hence why I’m encoding it.
-
I want shorter and more friendly looking paths. Contrary to one of the comments below, the base 64 encoding is NOT longer:
Guid: 5b263cdd-2bc2-485d-83d4-81b96930dc5a
Base64 Encoded: 3TwmW8IrXUiD1IG5aTDcWg== (even shorter after removing ==)
(Another) Update
Seems there is some confusion about what it is I’m trying to achieve (so sorry about that). Heres the short version.
- I have a Guid that represents an entity in my application.
- I need to create a publicly accessible directory for the entity (via
a Url). - I don’t want to use the Guid as the directory name, for the reasons
above. - I asked previously on SO about how I could generate a friendlier
looking Url that guaranteed uniqueness and did not expose the
original Guid. The suggestion was Base64 encoding. - This has worked fine until recently when we needed to use Azure blob
storage, which does not allow underscores “_” in it’s directory
(Container) names.
This is where I’m at.
Just “encode” the GUID in base16. The only characters it uses are 0123456789ABCDEF which should be safe for most purposes.