@Override public void write(PasswordMessage msg, ByteBuffer buffer) { buffer.put((byte) 'p'); buffer.putInt(0); buffer.put(msg.getPasswordHash() != null ? msg.getPasswordHash() : bytes(msg.getPassword())); buffer.put((byte) 0); buffer.putInt(1, buffer.position() - 1); }
public PasswordMessage(String username, String password, byte[] md5salt) { this.password = password; this.passwordHash = md5salt != null ? md5(username, password, md5salt) : null; }
Observable<? extends Message> authenticate(String username, String password, Message message) { return message instanceof Authentication && !((Authentication) message).isAuthenticationOk() ? stream.authenticate(new PasswordMessage(username, password, ((Authentication) message).getMd5Salt())) : Observable.just(message); }
Observable<? extends Message> authenticate(String username, String password, Message message) { return message instanceof Authentication && !((Authentication) message).isAuthenticationOk() ? stream.authenticate(new PasswordMessage(username, password, ((Authentication) message).getMd5Salt())) : Observable.just(message); }
@Override public void write(PasswordMessage msg, ByteBuffer buffer) { buffer.put((byte) 'p'); buffer.putInt(0); buffer.put(msg.getPasswordHash() != null ? msg.getPasswordHash() : bytes(msg.getPassword())); buffer.put((byte) 0); buffer.putInt(1, buffer.position() - 1); }
public PasswordMessage(String username, String password, byte[] md5salt) { this.password = password; this.passwordHash = md5salt != null ? md5(username, password, md5salt) : null; }
static byte[] md5(String username, String password, byte[] md5salt) { MessageDigest md5 = md5(); md5.update(bytes(password)); md5.update(bytes(username)); byte[] hash = bytes(printHexBinary(md5.digest()).toLowerCase()); md5.update(hash); md5.update(md5salt); hash = bytes(printHexBinary(md5.digest()).toLowerCase()); byte[] prefixed = new byte[hash.length + 3]; prefixed[0] = (byte) 'm'; prefixed[1] = (byte) 'd'; prefixed[2] = (byte) '5'; System.arraycopy(hash, 0, prefixed, 3, hash.length); return prefixed; }
static byte[] md5(String username, String password, byte[] md5salt) { MessageDigest md5 = md5(); md5.update(bytes(password)); md5.update(bytes(username)); byte[] hash = bytes(printHexBinary(md5.digest()).toLowerCase()); md5.update(hash); md5.update(md5salt); hash = bytes(printHexBinary(md5.digest()).toLowerCase()); byte[] prefixed = new byte[hash.length + 3]; prefixed[0] = (byte) 'm'; prefixed[1] = (byte) 'd'; prefixed[2] = (byte) '5'; System.arraycopy(hash, 0, prefixed, 3, hash.length); return prefixed; }