タグ

ブックマーク / qiita.com/yyu (3)

  • 正規表現のJITコンパイラを実装する - Qiita

    前回の記事で、正規表現(の抽象構文木)からLLVMの中間表現(LLVM IR)1へコンパイルするという試みを行ったところ、Twitterで次のような投稿をいただいた2。 @_yyu_ https://t.co/UPV535fqbB とかを使うと、Mokkosuから動的コード生成ができてきっと楽しいです。 — ラムダ太郎 (@lambdataro) 2015, 5月 11 つまり、プログラムの実行時に正規表現に対応するバイトコードを生成して、それを実行すれば速度が早くなったりするかもしれないということである。これは一般的にJust in Time(JIT)コンパイルと呼ばれているもので、正規表現技術入門というでも紹介されている。Mokkosuで実装してもよかったが、たぶんMokkosuのプログラマはそれほど多くないだろうということで、今回もScalaを使って実装することにする。 正規表現の

    正規表現のJITコンパイラを実装する - Qiita
  • 正規表現からLLVMへのコンパイラを実装する - Qiita

    正規表現技術入門というの中に、正規表現のJITコンパイルという技術が紹介されている。VM型の正規表現エンジンは以前作った1ので、これをLLVMへコンパイルすればおもしろいのではないかと考えて、実行することにした。なお、実装にはScalaを用いた。 追記: また、JVMのバイトコードへJITコンパイルする実験も書きました。 正規表現のJITコンパイラを実装する 正規表現の抽象構文木 VMの実装の時に用いたものと同じく、次のデータ構造を用いる。 sealed trait Regex case object Empty extends Regex case class Let(c: Char) extends Regex case class Con(a: Regex, b: Regex) extends Regex case class Alt(a: Regex, b: Regex) ext

    正規表現からLLVMへのコンパイラを実装する - Qiita
  • TOTPを総当たり攻撃で破るのに必要な時間 - Qiita

    はじめに TOTPは多要素認証(二段階認証)の一つで、ワンタイムパスワード(OTP)をスマートフォンなどにインストールされたソフトウェアで生成し、それをログインの際に用いる認証方法である。この記事では、攻撃者が総当たり攻撃を用いてTOTPを破るまでに必要な時間を計算することにする。 なお、筆者は数学の知識がそれほどあるわけではないので、もし微妙な部分があったら気軽にコメントなどで指摘してほしいと思う。 アイディア この記事のアイディアは、「TOTPが30秒に一度パスワードが変更される認証」と考えることで、下記の記事の数式を用いることである。 パスワードの最適変更間隔とその定量的効果の評価 パスワードが変更される際の、攻撃者がパスワードを知るために必要な平均時間 これは上記の記事で述べられていることを、僕が再度書き下したものなので、最後の結論以外はあまり読む必要がない。 攻撃者がパスワードを

    TOTPを総当たり攻撃で破るのに必要な時間 - Qiita
  • 1