手抜きパスワードマネージャを作ってみた
超テキトーな実装のパスワードマネージャを作ってみた。
セキュリティなんて無視。
get [keyword] でクリップボードにキーワードに対応するパスワードが入る。
set [keyword] でクリップボードにあるパスワードがキーワードに関連付けられる。
set [keyword] [password] はクリップボードの代わりに手打ちで設定する場合(蛇足か?)。
キーワードとパスワードの保存先はWindowsの場合はレジストリになる。UNIXとかの場合はどこかのファイルに保存されるはず。
import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.util.prefs.Preferences; public class PasswordManager { public static void main(String[] args) throws Exception { String mode = args[0]; String keyword = args[1]; Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); Preferences prefs = Preferences.userNodeForPackage(PasswordManager.class); if (mode.equals("get")) { String password = prefs.get(keyword, null); StringSelection ss = new StringSelection(password); cb.setContents(ss, ss); } else if (mode.equals("set")) { String password; if (args.length >= 3) { password = args[2]; } else { password = (String)cb.getData(DataFlavor.stringFlavor); } prefs.put(keyword, password); } } }
本来はマスターパスワードを鍵にして暗号化・復号化するべきなんだろう。
その場合は
set [master password] [keyword]
get [master password] [keyword]
のようになるのかな?
bluewindというキーワードランチャから使うことを想定しているので、この方法だとこのツールの候補リストとか履歴とかに残っちゃって意味が薄れるなぁ。