package org.apache.kerberos.kerb.crypto.key;
import org.apache.kerberos.kerb.crypto.enc.EncryptProvider;
import org.apache.kerberos.kerb.KrbException;
import sun.security.provider.MD4;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
public class Rc4KeyMaker extends AbstractKeyMaker {
public Rc4KeyMaker(EncryptProvider encProvider) {
super(encProvider);
}
@Override
public byte[] str2key(String string, String salt, byte[] param) throws KrbException {
if (param != null && param.length > 0) {
throw new RuntimeException("Invalid param to str2Key");
}
try {
byte[] passwd = string.getBytes("UTF-16LE"); // to unicode
MessageDigest md = MD4.getInstance();
md.update(passwd);
return md.digest();
} catch (UnsupportedEncodingException e) {
throw new KrbException("str2key failed", e);
}
}
}