[解決済み] C#でBase64 URLセーフエンコーディングを実現するには?
2022-05-15 11:35:40
質問
C#でBase64のURLセーフエンコーディングを実現したい。Javaでは、一般的な
Codec
ライブラリがあり、URLセーフエンコードされた文字列を得ることができます。C#を使用して同じことを実現するにはどうすればよいですか?
byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("StringToEncode");
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
上記のコードではBase64に変換されますが、パッドで
==
. URLセーフエンコーディングを実現する方法はありますか?
どのように解決するのですか?
よくあるのが
単純にアルファベットを入れ替える
で、%-エンコーディングは必要ありません。
+
,
/
と
=
最も一般的な置換は
-
の代わりに
+
と
_
の代わりに
/
. パディングについては
を削除してください。
(その
=
); を削除することができます。
を推測する
を推測することができます。もう一方の端:プロセスを逆にするだけです。
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes)
.TrimEnd(padding).Replace('+', '-').Replace('/', '_');
を使っています。
static readonly char[] padding = { '=' };
と逆にしてください。
string incoming = returnValue
.Replace('_', '/').Replace('-', '+');
switch(returnValue.Length % 4) {
case 2: incoming += "=="; break;
case 3: incoming += "="; break;
}
byte[] bytes = Convert.FromBase64String(incoming);
string originalText = Encoding.ASCII.GetString(bytes);
しかし、興味深いのは、この問題です。 は、quot;common codec library" が使用しているのと同じアプローチなのでしょうか? 確かに、最初にテストするのは妥当でしょう。これはかなり一般的なアプローチです。
関連
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み] enumを列挙するには
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] base64文字列をエンコード、デコードするにはどうしたらいいですか?
-
[解決済み] Base64エンコーディングは何に使うのですか?
-
[解決済み] コードが含まれるアセンブリのパスを取得するにはどうすればよいですか?
-
[解決済み] C#でURLのクエリ文字列を作成するには?
-
[解決済み] JavaでBase64としてエンコードする
-
[解決済み】Node.jsでBase64エンコードを行うにはどうすればよいですか?
-
[解決済み】なぜBase64を使うのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】IntPtrとは一体何なのか?