Sub Cipher - 使用取代加密法(Substitution cipher)對字串進行加解密
2014-10-18 11:49:13

What

使用取代加密法(Substitution cipher)對字串進行加解密。

Why

大部分的相關的gem只有做到簡易替換方式的加密,另外在定義字母對應的時候也沒有看到一個比較好用的方式,所以決定自己做一個。

How

基本使用方式如下:

sc = SubCipher.gen
sc.encode("Here is a secret.")
# "Wyky gn q nyakyr."
sc.decode("Wyky gn q nyakyr.")
# "Here is a secret."
sc.seed
# "abcdefghijklmnopqrstuvwxyz"
sc.map
# "qeahyftwgpjixodzbknrlscvum"

SubCipher.gen會使用預設的參數(也就是英文字母)建立一個SubCipherObject,接著可以用encodedecode來進行加解密。注意的是同一個字母但不同大小寫會對應到同一個字母,例如:如果a對應到b,那表示A會對應到B。seedmap則是用來表示字母的對應情況,以上面的例子來說就是將abcdefghijklmnopqrstuvwxyz對應到qeahyftwgpjixodzbknrlscvum

另外SubCipher.gen也提供了一些參數可以自定義要加解密的字母(seed)與如何做字母對應(map, keep_case)。詳細的使用方式請參考README - Options

心得

想要做一個簡單的加解密方法讓存在資料庫的敏感資料可以做個轉換,不要單純以明碼的方式做儲存。另外覺得自己太久沒有寫ruby了,所以就順便練習一下。