我有一系列加密字符串,我在 C#/ASP.Net Web 应用程序中用作 id。我需要在id
属性中使用这些,但是,字符串包含非法字符(有效字符只有“[A-Za-z0-9-_:.]”)。我需要一个双向转换,将我的加密字符串映射到这个小集合。类似 Base64 的东西,但更小。
我的替代方案是什么?是否有为此的标准算法,或者我必须自己发明它是否很奇怪?
解决方案: 如果有人需要这个,这就是我最终要做的。替换无效字符,并去掉 padding = char。然后撤消此操作以恢复。
private static string MakeReferenceJavascriptCompatible(string reference)
{
return reference.Replace("+", "_")
.Replace("/", "-")
.Replace("=", "");
}
private static string UndoMakeReferenceJavascriptCompatible(string reference)
{
int padding = 4 - (reference.Length % 4);
return reference.Replace("-", "/")
.Replace("_", "+")
.PadRight(reference.Length + padding, '=');
}