残念ながら、これを行うコードがいくつかあります。
byte[] plainText = System.Text.Encoding.ASCII.GetBytes(ClearText);
var btcipherText = enc.Encrypt(plainText, btkey);
System.Text.Encoding en = System.Text.Encoding.Default;
return en.GetString(btcipherText);
その後、ユーザーのパスワードとしてデータベースに保存されます。
モノラルでは、Ubuntu 12.04ではSystem.Text.Encoding.Default
System.Text.Encoding.UTF8ですが、Windows7ではのようSystem.Text.SBCSCodePageEncoding
です。
パスワードの暗号化/復号化コードは使用されるべきではありませんでしSystem.Text.Encoding.Default
たが、これは継承されたコードです。を調べSystem.Text.Encoding
て、問題を広範囲に調べたところ、この文字列を標準のエンコーディングで、この場合は元のエンコーディングがないMono/Linuxスタックでどのようにデコードできるかを判断できません。
私も不思議なことに多くの情報を見つけることができませんでしたSystem.Text.SBCSCodePageEncoding
このエンコーディングで保存された文字列を復号化しようとすると、通常の「不正なデータ」と「無効なブロックサイズ」の暗号化例外が発生します。
任意の情報や提案をいただければ幸いです。