私は。。をしようとしています:
例えば question のようないくつかのソリューションを試しました。
何らかの理由で、最初と最後のバイト配列が一致しません。使用されるコードは次のとおりです。
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
byte[] originalArray = new byte[32];
rng.GetBytes(key);
string temp_inBase64 = Convert.ToBase64String(originalArray);
byte[] temp_backToBytes = Encoding.UTF8.GetBytes(temp_inBase64);
}
私の質問は:
「originalArray」と「temp_backToBytes」が一致しないのはなぜですか? (originalArrayの長さは32、temp_backToBytesの長さは44ですが、値も異なります)
前後に変換することは可能ですか?その場合、どうすればこれを達成できますか?
エンコードされた配列が約4分の1だけ長い理由は、base-64エンコードでは各バイトのうち6ビットしか使用されないためです。それがその存在理由です-電子メールなどのASCIIのみのチャネルを介した交換に適した方法で、任意のデータを、おそらくゼロやその他の印刷不可能な文字でエンコードするため。
元の配列を取得する方法は、Convert.FromBase64String
を使用することです。
byte[] temp_backToBytes = Convert.FromBase64String(temp_inBase64);