おそらく車輪だろうけど

 LDAP で管理している Samba のユーザアカウントを Java からいじれるように Java による LANMAN パスワードと NT パスワードのそれぞれのハッシュ値を求めるライブラリを作成しました。

 要するに sambaSamAccount の sambaLMPassword と sambaNTPassword のためのハッシュ値を求めるライブラリです。

 ライセンスとか難しいことは考えていませんが、とりえず LGPL ということで使ってください。

 Samba と LDAP に関するツールとして smbldap tools というのがあります。これは perl スクリプトによるコマンド群です。この中にパスワードを設定するコマンドがあるのですが、これは mkntpwd という外部コマンド(ネイティブコード)を呼んで LANMAN パスワードと NT パスワードのハッシュ値を求めています。その mkntpwd を Java に移植したというだけです。

使い方

 以下のサンプルコードでわかるのではないかと。

package example;

import sc.oss.samba.ldap.MkNtPwd;

public class Exsample {
    public static void main(String[] args) {
        String password = "hogehoge";
        String lmPassword = MkNtPwd.makeSambaLMPassword(password);
        String ntPassword = MkNtPwd.makeSambaNTPassword(password);
	
        System.out.println("sambaLMPassword : " + lmPassword);
        System.out.println("sambaNTPassword : " + ntPassword);
    }
}

実行結果

sambaLMPassword : 9E88480B3F6ADE3217306D272A9441BB
sambaNTPassword : 480F97CE40A2C72826C293D71BA565E0