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.