とある組み込み屋のブログ

駆け出しの組み込みソフトウェア屋が技術的なことから日常的なことまで、色々書きます。

Ruby

Ruby

最近Rubyも嗜んでおりまして、
これがまたとっつきがたく、、、
スクリプト言語なのでコンパイル不要の言語なので、
慣れてしまうと連続実行とかそういうのはお手の物の代物なのですが
やはりCとは勝手が違いますね笑
ただOpenSSLが標準のライブラリで入っているのは素晴らしいです。
DESとかAESとかそういう暗号化で遊ぶことができますし、面白いですよ。たとえば、2key TripleDESもこんな簡単に組めます。

require 'openssl'

msg = "\x00" *8
c1 = OpenSSL::Cipher.new("des-ede")
c1.key = "\x23" *16
msg = c1.encrypt.update(msg)
puts msg.unpack('H*')
puts __ENCODING__

edeって言うのはencrypt decrypt encryptのことで、
Triple DESとはその名の通りDESを3回暗号化、復号化、暗号化と繰り返し、
暗号化を行います。unpack('H*')というのは、暗号化されたものを16進数1バイトごとに配列にするようなものです。(適当、うろ覚え、、、)
3-key Triple DESというのと2-key Triple DESの違いは
ずばり鍵の長さですね。
2-keyは平文の2倍長、3-keyは3倍長。
2-keyは鍵を2分割して左側で暗号化、右側で復号化をかける。
3-keyは鍵を3分割して3つの鍵で暗号、復号、暗号のフローに割り当て。

上記のコードは平文8バイトで値はオール00(16進数)で、
鍵は23(16進数)が16回繰り返されている16バイトの鍵値の、
2-key Triple DESの単純なRubyプログラムです。
たった数行で組めてしまいます。
すごいですね。