chachaのkeyの作成

投稿者: | 2020年1月3日

コードをいじっていますが、keyの作成方法を変えました。

key streamの出力の偏りを調べることをやっているので、keyとnonceをランダムに決定して、そこからkey streamを作っています。

前のゼミで「key streamから次のkeyを決めてはどうか?」と言われたので、色々考えてやっています。

[cpp] /次のkeyとnonceを作成する。 int dice(int i){ mt19937 mt; random_device rnd; mt.seed(rnd()); uniform_int_distribution<> rand1(0, i); return rand1(mt); } string next_key(string key){ string n_key; for(int i = 0; i < 64; i++){ n_key.push_back(key[dice(127)]); } return n_key; } string next_nonce(string key){ string n_nonce; for(int i = 0; i < 16; i++){ n_nonce.push_back(key[dice(127)]); } return n_nonce; } [/cpp]

72~95行目の部分です。

やってることは簡単です。0~128の乱数を生成して、key streamからその番目の文字を次のkeyやnonceにpush backします。

しかし、この方法だとあまりに実行速度がおそすぎます。サンプルサイズを計算して、大体9億個のkey streamを作成する予定なので、もっと高速化します。

そもそも、key streamは疑似乱数機によって偏りなく出るはずなので、key streamを二分割して前か後ろを次のkeyに使うぐらいでいいと思っています。

nonceは文字数が少ないので、このまま乱数使って生成させます。

コード書いてて、私はコードが書きたいだけで、暗号をやりたいわけじゃないんだなあって思っています。今更なのでがんばります。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください