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, '=');
}