めんどくさいファイル入出力です。毎回忘れるので、いつも調べています。
[blogcard url=”https://qiita.com/NickTominaga/items/7e01b7eb0b67ac791ec6″]
さて、問題は複数のファイルを読み込みたい場合です。私の場合は連番のファイルを順番に読み込みたいというものでした。
続きを読むめんどくさいファイル入出力です。毎回忘れるので、いつも調べています。
[blogcard url=”https://qiita.com/NickTominaga/items/7e01b7eb0b67ac791ec6″]
さて、問題は複数のファイルを読み込みたい場合です。私の場合は連番のファイルを順番に読み込みたいというものでした。
続きを読む卒研で文字列から数値に変換する時にstoi()を使っています。しかし、これが曲者で、毎回コンパイルエラーを出してしまいます。
[bash] terminate called after throwing an instance of ‘std::invalid_argument’ what(): stoi [/bash]環境によってメッセージは異なりますが、だいたいこんな感じです。
さて、これはなんだと言われたら、例外処理を書いてねーぞっていうメッセージらしいです。
[blogcard url=”https://github.com/CtrlGit/cpp-tutorial/blob/master/doc/xx-ExceptionHandling.md”]
ということで、例外処理を書いてあげればOK。
参考:[blogcard url=”https://qiita.com/koara-local/items/3d1b077764e16171b6dd”]
invalid_argumentは「これ数値じゃねえぞ」って感じで、out_of_rangeは「型の最大値超えたんだが?」という感じだと思います。
ただ、ちゃんと文字列が数値だけだと例外処理書いてなくても動くんですよね。
このへん、コンパイラの気持ちがよくわからない。
エラーメッセージは以下の通り。
[bash] c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../libmingwex.a(vsnprintf.o):(.text+0x0): multiple definition of `vsnprintf’; C:\Users\ATERUI~1\AppData\Local\Temp\cc94Zci2.o:analyze_key_stream.cpp:(.tex t$vsnprintf[_vsnprintf]+0x0): first defined here [/bash]解決方法は、MinGW Installation Managerを起動します。
その後、All Packagesからmingw32-libmigwexを探し、チェックボックスにチェックを入れます。
最後に、Installtion→Apply Changeで終わりです。これでコンパイルエラーは消えたはずです。
卒研中、Windows機2台(家のメインPC,研究室のPC),Ubuntu機(サブ機),Mac(MBA)と環境をいったり来たりしていますが、MinGWはやけにコンパイルエラーが多い気がします。
windowsもbrewでgccをinstallできればいいんだけどなあ・・・。
めんどくさいとか言ってましたが、PowerShellで改行コードの変換ができるらしい。というか、できた。
[blogcard url=”https://nodamushi.hatenablog.com/entry/2017/12/14/221801″]
・改行コードをLF(linux,Mac,Unix)→CR+LF(windows)に変換する方法
変換したいファイルをすべて同じフォルダにぶち込みます。
powershellを起動して、そのディレクトリまで移動します。
※フォルダ名に空白(スペース)があるときは、フォルダ名をシングルクォーテーションで囲みます。
ディレクトリを移動したら、以下のコマンドを実行します。
[bash] ls | foreach{ (cat -encoding UTF8 $_ ) -join "`r`n" | set-content -encoding UTF8 $_ } [/bash]コマンドは上のサイトのままです。powersehllはコピペができるので、Ctrl+C,Ctrl+Vで楽しましょう。
あとは終わるまで待てば終わりです。楽やな?
Linux側でやっておく場合は、nkfコマンドと使えば行けるっぽいです。
[blogcard url=”https://shellscript.sunone.me/character_code.html”]
powershell便利やな?
卒研末期ですが未だに結果が出ていなくてやばいです。
さて、現在、研究室のwindows機ではコードを書いていて、家から持ってきたubuntu機で書いたコードを実行しています。そのため、結果のファイルを共有する必要があります。
同一LAN内なので、共有フォルダでできそうですが、家でもやっているため、やはりインターネット上に置くのが一番だと思いました。そして、特に理由はなくGoogleドライブを使いました。
続きを読むまた卒研の話です。論文にある手法を別の暗号に当てはめるということをやっているので、論文の手法をそのままやってみています。
そのなかで、2^40個のkey streamを調べてみる必要があるらしいので、そのとおりにやってみようとしました。
しかし、2^40個は約100兆個。普通に計算させていたら終わらない。
ということで、並列化をやってみました。
続きを読む卒研で2周間以内には成果を出さないといけないので、色々やっているところです。
とりあえず、正月に書いてたchachaのコードを変えて、2^32個のkey streamのリストを256個作成するようにしました。
これは、RC4への平文回復攻撃で使われていた手法を真似るためです。
そうやって書いたコードが以下の通りになっています。
続きを読むコードをいじっていますが、keyの作成方法を変えました。
key streamの出力の偏りを調べることをやっているので、keyとnonceをランダムに決定して、そこからkey streamを作っています。
前のゼミで「key streamから次のkeyを決めてはどうか?」と言われたので、色々考えてやっています。
続きを読む前にC++でchachaを実装したのですが、stateを16進数に変換してkey streamにするときにミスをしていたので、key streamのbyte数がおかしいことになっていました。それに今頃気がついたので、修正しました。
続きを読む