/* * Copyright 2001-2013 Geert Bevin (gbevin[remove] at uwyn dot com) * Licensed under the Apache License, Version 2.0 (the "License") */ package com.uwyn.rife.tools; import junit.framework.TestCase; import java.security.NoSuchAlgorithmException; public class TestStringEncryptor extends TestCase { public TestStringEncryptor(String name) { super(name); } public void testAdaptiveEncrypt() { String encrypted_value_sha = "SHA:Hw/gszrpwzs0GnKTaKbwetEqBb0="; String encrypted_value_shahex = "SHAHEX:1f0fe0b33ae9c33b341a729368a6f07ad12a05bd"; String encrypted_value_md5 = "MD5:JZ3Y+j2LYEvTmtYRY1Khsw=="; String encrypted_value_md5hex = "MD5HEX:259dd8fa3d8b604bd39ad6116352a1b3"; String encrypted_value_obf = "OBF:1w261wtu1ugo1vo41vmy1uh21wuk1w1c"; String encrypted_value_wrp = "WRP:XRadzcqykoN26sWuGe0j85TRoOaErinQr0+QKWsy1hlTMJdtRMkLUo+A4S/Wr3xcj+Va6jc0XLGfcWusuNMrcg=="; String encrypted_value_wrphex = "WRPHEX:5d169dcdcab2928376eac5ae19ed23f394d1a0e684ae29d0af4f90296b32d6195330976d44c90b528f80e12fd6af7c5c8fe55aea37345cb19f716bacb8d32b72"; String encrypted_value_none = "thevalue"; String value = "thevalue"; try { assertEquals(encrypted_value_sha, StringEncryptor.adaptiveEncrypt(value, "SHA:123")); assertEquals(encrypted_value_shahex, StringEncryptor.adaptiveEncrypt(value, "SHAHEX:123")); assertEquals(encrypted_value_md5, StringEncryptor.adaptiveEncrypt(value, "MD5:123")); assertEquals(encrypted_value_md5hex, StringEncryptor.adaptiveEncrypt(value, "MD5HEX:123")); assertEquals(encrypted_value_obf, StringEncryptor.adaptiveEncrypt(value, "OBF:123")); assertEquals(encrypted_value_wrp, StringEncryptor.adaptiveEncrypt(value, "WRP:123")); assertEquals(encrypted_value_wrphex, StringEncryptor.adaptiveEncrypt(value, "WRPHEX:123")); assertEquals(encrypted_value_none, StringEncryptor.adaptiveEncrypt(value, "123")); } catch (NoSuchAlgorithmException e) { fail(); } } public void testGetEncryptor() { String encrypted_value_sha = "SHA:Hw/gszrpwzs0GnKTaKbwetEqBb0="; String encrypted_value_shahex = "SHAHEX:1f0fe0b33ae9c33b341a729368a6f07ad12a05bd"; String encrypted_value_md5 = "MD5:JZ3Y+j2LYEvTmtYRY1Khsw=="; String encrypted_value_md5hex = "MD5HEX:259dd8fa3d8b604bd39ad6116352a1b3"; String encrypted_value_obf = "OBF:1w261wtu1ugo1vo41vmy1uh21wuk1w1c"; String encrypted_value_wrp = "WRP:XRadzcqykoN26sWuGe0j85TRoOaErinQr0+QKWsy1hlTMJdtRMkLUo+A4S/Wr3xcj+Va6jc0XLGfcWusuNMrcg=="; String encrypted_value_wrphex = "WRPHEX:5d169dcdcab2928376eac5ae19ed23f394d1a0e684ae29d0af4f90296b32d6195330976d44c90b528f80e12fd6af7c5c8fe55aea37345cb19f716bacb8d32b72"; String value = "thevalue"; try { assertEquals(encrypted_value_sha, StringEncryptor.getEncryptor(StringEncryptor.IDENTIFIER_SHA).encrypt(value)); assertEquals(encrypted_value_shahex, StringEncryptor.getEncryptor(StringEncryptor.IDENTIFIER_SHAHEX).encrypt(value)); assertEquals(encrypted_value_md5, StringEncryptor.getEncryptor(StringEncryptor.IDENTIFIER_MD5).encrypt(value)); assertEquals(encrypted_value_md5hex, StringEncryptor.getEncryptor(StringEncryptor.IDENTIFIER_MD5HEX).encrypt(value)); assertEquals(encrypted_value_obf, StringEncryptor.getEncryptor(StringEncryptor.IDENTIFIER_OBF).encrypt(value)); assertEquals(encrypted_value_wrp, StringEncryptor.getEncryptor(StringEncryptor.IDENTIFIER_WHIRLPOOL).encrypt(value)); assertEquals(encrypted_value_wrphex, StringEncryptor.getEncryptor(StringEncryptor.IDENTIFIER_WHIRLPOOLHEX).encrypt(value)); assertNull(StringEncryptor.getEncryptor("BLAH")); } catch (NoSuchAlgorithmException e) { fail(); } } public void testEncryptPlain() { String value = "somevalue"; try { String encrypted = StringEncryptor.autoEncrypt(value); assertEquals(encrypted, value); assertTrue(StringEncryptor.matches(value, encrypted)); } catch (NoSuchAlgorithmException e) { fail(); } } public void testEncryptOBF() { String value = "somevalue"; String value2 = "somevalue"; String value3 = "somevalue2"; String value4 = "SHA:somevalue"; try { String encrypted = StringEncryptor.autoEncrypt("OBF:" + value); assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(!StringEncryptor.matches(value3, encrypted)); assertTrue(!StringEncryptor.matches(value4, encrypted)); assertEquals(StringEncryptor.deobfuscate(encrypted), value); } catch (NoSuchAlgorithmException e) { fail(); } } public void testEncryptMD5() { String value = "MD5:somevalue"; String value2 = "somevalue"; String value3 = "somevalue2"; String value4 = "SHA:somevalue"; try { String encrypted = StringEncryptor.autoEncrypt(value); assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(!StringEncryptor.matches(value3, encrypted)); assertTrue(!StringEncryptor.matches(value4, encrypted)); } catch (NoSuchAlgorithmException e) { fail(); } } public void testEncryptMD5HEX() { String value = "MD5HEX:somevalue"; String value2 = "somevalue"; String value3 = "somevalue2"; String value4 = "SHA:somevalue"; try { String encrypted = StringEncryptor.autoEncrypt(value); assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(!StringEncryptor.matches(value3, encrypted)); assertTrue(!StringEncryptor.matches(value4, encrypted)); } catch (NoSuchAlgorithmException e) { fail(); } } public void testEncryptSHA() { String value = "SHA:somevalue"; String value2 = "somevalue"; String value3 = "somevalue2"; String value4 = "MD5:somevalue"; try { String encrypted = StringEncryptor.autoEncrypt(value); assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(!StringEncryptor.matches(value3, encrypted)); assertTrue(!StringEncryptor.matches(value4, encrypted)); } catch (NoSuchAlgorithmException e) { fail(); } } public void testEncryptSHAHEX() { String value = "SHAHEX:somevalue"; String value2 = "somevalue"; String value3 = "somevalue2"; String value4 = "MD5HEX:somevalue"; try { String encrypted = StringEncryptor.autoEncrypt(value); assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(!StringEncryptor.matches(value3, encrypted)); assertTrue(!StringEncryptor.matches(value4, encrypted)); } catch (NoSuchAlgorithmException e) { fail(); } } public void testEncryptWRP() { String value = "WRP:somevalue"; String value2 = "somevalue"; String value3 = "somevalue2"; String value4 = "MD5:somevalue"; try { String encrypted = StringEncryptor.autoEncrypt(value); assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(!StringEncryptor.matches(value3, encrypted)); assertTrue(!StringEncryptor.matches(value4, encrypted)); } catch (NoSuchAlgorithmException e) { fail(); } } public void testEncryptWRPHEX() { String value = "WRPHEX:somevalue"; String value2 = "somevalue"; String value3 = "somevalue2"; String value4 = "MD5HEX:somevalue"; try { String encrypted = StringEncryptor.autoEncrypt(value); assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(!StringEncryptor.matches(value3, encrypted)); assertTrue(!StringEncryptor.matches(value4, encrypted)); } catch (NoSuchAlgorithmException e) { fail(); } } }