次のコードを使用して value1 を byte[] に変換しようとすると:
string value1 = "4rdHFh%2BHYoS8oLdVvbUzEVqB8Lvm7kSPnuwF0AAABYQ%3D";
byte[] value2 = Convert.FromBase64String(value1);
文字列の内容が無効な base-64 文字であるというエラーを受け取りました...
どうしたの?
ありがとう!
次のコードを使用して value1 を byte[] に変換しようとすると:
string value1 = "4rdHFh%2BHYoS8oLdVvbUzEVqB8Lvm7kSPnuwF0AAABYQ%3D";
byte[] value2 = Convert.FromBase64String(value1);
文字列の内容が無効な base-64 文字であるというエラーを受け取りました...
どうしたの?
ありがとう!
私は同じ問題を抱えていましたが、これらの答えはどれも私を助けてくれませんでした! だから私はここで私の質問をします: 非ベース64文字を含む可能性のある文字列を暗号化し 、@ luke-parkが私の問題を解決する方法.(すべてのクレジットは彼に送られます)
inputString
データをバイト配列に変換してから、それを に変換する必要があり ますbsae64
。これで、データは有効なbase64
形式になり、暗号化できます。
byte[] data = Encoding.UTF8.GetBytes(inputString);
string b64 = Convert.ToBase64String(data);
これが同じ問題を抱えている他の人々に役立つことを願っています。
PS:私の投稿には 2 つの暗号化クラスがあり、文字列の暗号化/復号化に使用するのに最適です。
%2B は + 記号の URL エンコードです %3D は = 記号の URL エンコードです。
あなたの入力文字列は実際です。
4rdHFh+HYoS8oLdVvbUzEVqB8Lvm7kSPnuwF0AAABYQ=
文字列に無効な文字が含まれています。この場合は%
記号です。
%2B
「+」と「=」にエスケープ解除する%3D
と、文字列が受け入れられます。
問題はキャラクターにあると思います%
。base64 文字列では許可されていません
MSDNによると
public static byte[] FromBase64String( string s)
s は、base-64 数字、空白文字、および末尾の埋め込み文字で構成されます。base-64 の数字は、0 から昇順で、大文字の "A" から "Z"、小文字の "a" から "z"、数字の "0" から "9"、および記号の "+" と "/" です。 "。