Ruby

RSA暗号のべき乗剰余計算

RSA暗号 RSA暗号では、a^b mod c という演算が使われる。 暗号化及び復号化の手順は次のようになる。 素数p, q (自分で決める) n = p * q n' = (p - 1) * (q - 1) n' と互いに素な数 e (自分で決める) e * d mod n' = 1 となる d ( 1 < d < n' の範囲では…

Rubyメモ

Arrayで使えるメソッド ------------------------------------------------------------ # push n 配列の末尾に n を追加する(破壊的) a=[1,2,3] a.push(4,5) a => [1, 2, 3, 4, 5] ------------------------------------------------------------ # pop # p…

Rubyメモ

連続する同じ文字で文字列を分割 scan str = "122333455" str.scan(/((.)\2*)/).map(&:first) #=> ["1", "22", "333", "4", "55"] 括弧が2つあるのは、内側の括弧のドットで1文字にマッチし、外側の括弧でその繰り返しをキャプチャするため。ドットにマッ…

Rubyメモ

範囲オブジェクト 範囲オブジェクトは each や map に渡せばその範囲での繰り返しになるが、そのままでは配列にならない。そのため、to_a を使うなどをする。 (1..10).map{|c| print c} #=>12345678910 p (1..10) # 1..10 p [1..10] # [1..10] p (1..10).to_…