手抜きパスワードマネージャを作ってみた

超テキトーな実装のパスワードマネージャを作ってみた。
セキュリティなんて無視。

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というキーワードランチャから使うことを想定しているので、この方法だとこのツールの候補リストとか履歴とかに残っちゃって意味が薄れるなぁ。