私は次のことを理解しようとしています。C#Convert.ToBase64String()は64バイトを渡すときに長さを88にするのはなぜですか?
配列の長さ(バッファ)として64バイトを宣言している場合。私がベース64の文字列に変換すると、長さは88であると言われています。長さは64バイトでなければならないのですか?私はこの実際の仕組みを完全に誤解している可能性があります。もしそうなら、説明してください。
//Generate a cryptographic random number
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
// Create byte array
byte[] buffer = new byte[64];
// Get random bytes
rng.GetBytes(buffer);
// This line gives me 88 as a result.
// Shouldn't it give me 64 as declared above?
throw new Exception(Convert.ToBase64String(buffer).Length.ToString());
// Return a Base64 string representation of the random number
return Convert.ToBase64String(buffer);
Btw:単純な値をログに記録するのはひどい方法です... –
私はRGN暗号化を個人的には使用しません。暗号化された強力なRNGは遅くなります---それ以上の計算が必要です---スペクトル的になります白、 – MethodMan
このStackOverFlowを見てくださいRGNを使用するのが安全ではない理由の説明http://stackoverflow.com/questions/4892588/rngcryptoserviceprovider-random-number-review – MethodMan