追加された行はこの色です。削除された行はこの色です。-上記の者ですが、間違えて実名を入れてしまってので、訂正をお願いします。次の様に書き換えると、高速になります。-sha256.cppのコードを公開して頂き、大変勉強になりました。お蔭さまで、ハッシュのコードがわかるようになりました。ありがとうございました。ところで、コードに、もう2箇所ばかり気になるところがあります。i_,i_1,H[2][8]についてです。これはi_,i_1を使わずにH[8]とした方が良いと思われます。-間違って送信してしまったため、上記の続きです。SHA256::CalcIntermediateHash()のH[i_][0]=x[0]+H[i_1][0];などはH[0]+=x[0];などに変わりますが、gccで試したところ、この方が高速になりました。t++)W[t]=0;の+1の部分です。W[t]に既に0が代入されているため、この行全体がなくても動作しますので、バグではありませんが、このコードを参考にする人のために+1は削除した方が良いと思います。-こちらのソースを参考にさせていただきました。ありがとうございます。ここがなかったら実装はあきらめていたかも知れません。1つ質問させて下さい。繰り返す形で書けると思っています(やってみましたが同じ結果が出ました)。-Push()に1byteの長さのデータを10回渡してFinish()するのと、同じ10byteのデータを一回渡してFinish()するのとで答えが変わります。Push()を複数回呼び出す時は、データサイズが1024の倍数でないとならないとかじゃないでしょうか。ここにあるプログラムだと正しい計算ができるのですが、ここに公開されているプログラムだと同じハッシュ値になりませんでした。-訂正します、外国のサイトのコードは正しい値が計算できるのですが、岩崎さんのコードだと正しい値が出ませんでした。-お礼が後になってしまいました。ハッシュ値の正当性は、GNUのツールや、WindowsならPowerShellで確認出来ます。バイトのバイナリで、ハッシュ値の一致を確認出来ました。-重箱の隅ですみません...。ケアレスミス一つ発見しました。あと、Pushの先頭部分のバッファのコピーは、ポインタをキャストして単にmemcpyを使ってはどうでしょう。それと、これはこのコードを利用する方へ注意なのですが、Pushに渡すバッファがコーディング程度の大きさで無いと、ハッシュ計算バッファを超えて実行時エラーか暴走になります。アルゴリズムも良く見ずにすみません...。-今更ながらすみません、このソースは再配布等条件があるのでしょうか?あくまで参考用でしょうか?オープンソースライセンスに違反する可能性があるか気になっています。-自由に使っていただいて構いません。役に立ちましたら直接あったときにはぜひビールでもおごってください。-ご回答ありがとうございます。