### Question:
IRODSPasswordUtilities { public static String obfEncodeByKey(final String sourceData, final String key, final boolean pad) throws JargonException { if (sourceData == null || sourceData.isEmpty()) { throw new JargonException("newPassword is null or empty"); } if (key == null || key.isEmpty()) { throw new JargonException("oldPassword is null or empty"); } String randPaddedNewPassword; if (pad) { randPaddedNewPassword = padPasswordWithRandomStringData(sourceData); } else { randPaddedNewPassword = sourceData; } return obfuscateIRODSPasswordWithCypherChainingMD5(randPaddedNewPassword, key); }  static String obfuscateIRODSPasswordForAdminPasswordChange(final String newPassword,
			final String adminPassword, final String challengeValue); static String deriveHexSubsetOfChallenge(final String challengeValue); static String obfEncodeByKeyUsingPassword(final String sourceData, final String key, final boolean pad); static String obfEncodeByKey(final String sourceData, final String key, final boolean pad); static String obfuscateIRODSPasswordWithCypherChaining(final String newPassword, final String oldPassword); static String padPasswordWithRandomStringData(final String newPassword); static String getHexString(final byte[] b); static String getHexString2(final byte[] b); static int unsignedByteToInt(final byte b); static String getHashedPassword(final String passwordHashValue, final IRODSAccount irodsAccount); static String pad(String str, final int size, final char padChar); static final int WHEEL_LENGTH; static final int VAL_0; static final int VAL_A; static final int VAL_LC_A; static final int VAL_BANG; static final List<Integer> WHEEL; static final String RAND_STRING; static final String RAND_STRING_V2; static final int MAX_PWD_LENGTH; }### Answer:
@Test public void testObfuscate() throws Exception { String password = "hello"; String newPassword = "argybargy"; String obfuscated = IRODSPasswordUtilities.obfEncodeByKey(newPassword, password, true); Assert.assertEquals("o(yrwoSMzIqkTFzPV\"\"3V12(a00U*f+YRQ*N#MQJ", obfuscated); }