質問

今日は、Base64でエンコードが不正な文字を入力してもエラーとなっていない.

当社のXMLファイルを輸出します。場合、ユーザーが知りたいので圧縮ファイルです。圧縮動作を返しまBase64でエンコード文字列はUTF-8にエンコードされるとファイルに書き出した.

その時にブロードバンドのプログラムしているかチェック、圧縮しないと、コードは単純に:

byte[] gzBuffer = System.Convert.FromBase64String(text);
return "1F-8B-08" == BitConverter.ToString(new List<Byte>(gzBuffer).GetRange(4, 3).ToArray());

をチェックするだけであるため、文字列の開始がでGZipsコードです。

現在のものは、全ての試験です。い文字列を圧縮、解凍、およびの比較では、オリジナルです。その問題点をいただくと、文字列から返されるADO Recordset.この文字列は、このファイルに加え、"\0"ではないと思いるものは何も整えoffです).私もコピー&ペースト、文字列全体にするための試験装置を試作し、圧縮/解凍す。に働きます。

この試験は通過しますが、コードに失敗しま同じ文字列?唯一の違いはな宣言する通常の文字列とともにいくつから返されるrecordset.

そのアイデアが何をしてるわけではありませんので間違いだったのか?

役に立ちましたか?

解決

という

この文字列は、どの書いた のファイルの "\0"ではないと思い もとか付けたやつでも強い

実はそうないので原因コードを捨てる FormatException:"無効な文字ベース-64文字列"が Convert.FromBase64String とは考えておりません"\0"では、"有効Base64でエンコード文字です。

  byte[] data1 = Convert.FromBase64String("AAAA\0"); // Throws exception
  byte[] data2 = Convert.FromBase64String("AAAA");   // Works

【解決をなくゼロに終了した後も有効とします。 も話 .Trim("\0"))

注記:

MSDN docsのための Convert.FromBase64String と言うので捨てる FormatException

Sの長さを無視して空白 文字はゼロまたは複数の 4.

-または-

の形式"s情報を取り出すことができます。sを含む非base64文字以 以上の二つのパディングの文字、または の非空白文字の パディング文字です。

ことになる

ベースは64桁のから順に、 ゼロからの大文字 'A'-'Z'、小文字の'a' 'z',数字は'0'を'9'、 記号'+'、'/'.

他のヒント

ヌル文字が許可されていないか、本当に問題にbase64でコーデックに依存しているかどうか。 Base64で標準のあいまいさ(何の権威正確な仕様はありません)を考えると、多くの実装は、ちょうど空白としてそれを無視するでしょう。そして、他の人が問題としてフラグにそれをすることができます。そしてbuggiestものは気付かないだろうと喜んでそれを解読しようと...: - /

しかし、それは、C#の実装は(つの有効なアプローチである)、それを好きではないので、それが役立ちます取り外した場合、それが行われる必要があります。

聞こえます

一つのマイナーな追加のコメント:UTF-8は、ISO-8859-X別名ラテン-X、および7ビットASCIIが同様に働くだろう要件ではありません。このBase64では、具体的にのみ、すべての7ビットASCIIコンパチブルエンコーディングで動作する7ビットのサブセットを使用するように設計されたからである。

文字列の末尾から\ 0を除去することが不可能な場合は、

、あなたはエンコードする各文字列のために独自の文字を追加し、デコードにそれを削除することができます。

文字列からBase64で変換を行うには一つの落とし穴は、いくつかの変換関数は、前の「データ:画像/ JPG、BASE64」を使用することである。その他は実際のデータだけを受け入れる

string stringToDecrypt = HttpContext.Current.Request.QueryString.ToString()

//変更 ストリングstringToDecrypt = HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString.ToString())

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top