次のC#コード( http://wmsauth.org/examplesの関数から抽出された関数)を見BuildProtectedURLWithValidity
てください。
byte[] StringToBytesToBeHashed(string to_be_hashed) {
byte[] to_be_hashed_byte_array = new byte[to_be_hashed.Length];
int i = 0;
foreach (char cur_char in to_be_hashed)
{
to_be_hashed_byte_array[i++] = (byte)cur_char;
}
return to_be_hashed_byte_array;
}
私の質問は、バイトから文字へのキャストはエンコーディングに関して何をするのかということです。
エンコーディングに関しては実際には何もしないと思いますが、それはEncoding.Defaultが使用されることを意味するので、返されるバイトは、フレームワークが特定のオペレーティングシステムで基になる文字列をエンコードする方法に依存しますか?
その上、charは実際には1バイトよりも大きく(私は2バイトだと思います)、実際には最初のバイトを省略しますか?
私はこれをすべて次のように置き換えることを考えていました:
Encoding.UTF8.GetBytes(stringToBeHashed)
どう思いますか?