Base64Stringを使用せずにDecryptテキストを暗号化するには?
暗号化されたテキストには @、$、#、/、\、|、=、%、^ などの特殊文字を含めてはならないため、Base64String を使用したくありません。
base64 を使用したくない場合の明白なアプローチは、base16、つまり 16 進数を使用することです。
Stack Overflow には、バイト配列と 16 進文字列表現の間の変換の例がたくさんあります。(BitConverter.ToString(data).Replace("-", "")
これは、文字列への変換を実行する非効率的な方法です。逆にこれほど単純なものはありませんが、それほど多くのコードではありません。)
編集:コメントに記載されSoapHexBinary
ているように、これを行う簡単な方法があります。もちろん、そのクラスの使用をSOAP固有のタイプでラップしたくない場合もあります:)
もちろん、それはbase64よりもかなり多くのスペースを使用します. 1 つの代替方法として、base64 を使用する方法がありますが、別の文字セットを使用します。使用できる65 文字(65 番目はパディング用) を見つけて、その方法でエンコードします。(使用する文字を指定できるbase64ライブラリが利用できる場合がありますが、そうでない場合は非常に簡単に記述できます。)
法線だけを使用しようとしないでくださいEncoding
。基本的にテキストではないデータには適していません。
編集:コメントに記載されているように、base32も使用できます。これは大文字と小文字を区別せず (潜在的に便利)、明確にするために I/1 と O/0 を避けることができます。ただし、コーディングとデバッグは困難です。
ASP.NET メンバーシップ プロバイダーの実装については、MySQL コネクタのソース コードに優れた例があります。ダウンロードして調査するのは少し面倒かもしれませんが、十分に確立された暗号化および復号化モジュールが含まれています.
http://dev.mysql.com/downloads/connector/net/#downloads ダウンロードする前に「ソース コード」オプションを選択します。
データ送信または圧縮された文字ストレージのエンコード/デコードが必要な場合は、質問を編集する必要があります。エンコーディングの質問に対する回答は、暗号化/復号化の質問に対する回答とは大きく異なります。