おそらく車輪だろうけど
LDAP で管理している Samba のユーザアカウントを Java からいじれるように Java による LANMAN パスワードと NT パスワードのそれぞれのハッシュ値を求めるライブラリを作成しました。
要するに sambaSamAccount の sambaLMPassword と sambaNTPassword のためのハッシュ値を求めるライブラリです。
ライセンスとか難しいことは考えていませんが、とりえず LGPL ということで使ってください。
- smbldap-0.2.0.jar - コンパイル済みバイナリ
- smbldap-0.2.0-sources.jar - ソース
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