@Test public void testCreateMasterKeyNoSalt() throws InvalidKeySpecException, NoSuchAlgorithmException, NoSuchProviderException { SaltedSecretKey masterKeyForPasswordTestNoSalt1 = CipherUtil.createMasterKey("Test"); SaltedSecretKey masterKeyForPasswordTestNoSalt2 = CipherUtil.createMasterKey("Test"); logger.log(Level.INFO, "Key comparison for password 'Test':"); logger.log( Level.INFO, "- Master key 1: " + StringUtil.toHex(masterKeyForPasswordTestNoSalt1.getEncoded())); logger.log( Level.INFO, " with salt: " + StringUtil.toHex(masterKeyForPasswordTestNoSalt1.getSalt())); logger.log( Level.INFO, "- Master key 2: " + StringUtil.toHex(masterKeyForPasswordTestNoSalt2.getEncoded())); logger.log( Level.INFO, " with salt: " + StringUtil.toHex(masterKeyForPasswordTestNoSalt2.getSalt())); assertFalse( Arrays.equals( masterKeyForPasswordTestNoSalt1.getSalt(), masterKeyForPasswordTestNoSalt2.getSalt())); assertFalse( Arrays.equals( masterKeyForPasswordTestNoSalt1.getEncoded(), masterKeyForPasswordTestNoSalt2.getEncoded())); }
@Test public void testCreateMasterKeyWithSalt() throws InvalidKeySpecException, NoSuchAlgorithmException, NoSuchProviderException { long timeStart = System.currentTimeMillis(); SaltedSecretKey masterKeyForPasswordTestAndSalt123 = CipherUtil.createMasterKey("Test", new byte[] {1, 2, 3}); long timeEnd = System.currentTimeMillis(); long timeDuration = timeEnd - timeStart; logger.log(Level.INFO, "Creating master key took " + timeDuration + "ms:"); logger.log( Level.INFO, " - Key: " + StringUtil.toHex(masterKeyForPasswordTestAndSalt123.getEncoded())); logger.log( Level.INFO, " - Salt: " + StringUtil.toHex(masterKeyForPasswordTestAndSalt123.getSalt())); assertEquals("010203", StringUtil.toHex(masterKeyForPasswordTestAndSalt123.getSalt())); assertEquals( "44fda24d53b29828b62c362529bd9df5c8a92c2736bcae3a28b3d7b44488e36e246106aa5334813028abb2048eeb5e177df1c702d93cf82aeb7b6d59a8534ff0", StringUtil.toHex(masterKeyForPasswordTestAndSalt123.getEncoded())); assertEquals( CipherUtil.MASTER_KEY_SIZE / 8, masterKeyForPasswordTestAndSalt123.getEncoded().length); assertEquals("PBKDF2WithHmacSHA1", masterKeyForPasswordTestAndSalt123.getAlgorithm()); assertEquals("RAW", masterKeyForPasswordTestAndSalt123.getFormat()); assertTrue(timeDuration > 5000); }
private static SaltedSecretKey getMasterKey() throws Exception { if (!cryptoEnabled) { return null; } else { if (masterKey == null) { masterKey = CipherUtil.createMasterKey("some password"); } return masterKey; } }