わかりました。生のSHA1ハッシュを使用して、メルセンヌツイスターの疑似乱数ジェネレーターをシードしています。ジェネレーターには、unsignedlongまたはunsignedlongの配列のいずれかをシードするオプションがあります。
私が使用しているSHA1クラスは、ハッシュをunsignedcharsの20バイト配列として提供します
このcharの配列をlongの配列に再キャストして、機能するシードを取得できると思いましたが、結果のlongの配列の長さをどのように知ることができますか?
サンプルコード:
CSHA1 sha1;
sha1.Update((unsigned char*)key, size_key);
sha1.Final();
unsigned char* hash;
sha1.GetHash(hash);
// Seed the random with the key
MTRand mt((unsigned long*)hash, <size of array of longs>);
暗号化の安全性を維持するためにこれが必要なので、データの損失がないことを望んでいます(バイトがドロップオフされないため)。