OK, I added the test. Here's the new diff:
Index: src/unittests/com/uwyn/rife/tools/TestStringEncryptor.java
===================================================================
--- src/unittests/com/uwyn/rife/tools/TestStringEncryptor.java
(revision 3717)
+++ src/unittests/com/uwyn/rife/tools/TestStringEncryptor.java
(working copy)
@@ -20,6 +20,7 @@
public void testAdaptiveEncrypt()
{
String encrypted_value_sha = "SHA:Hw/
gszrpwzs0GnKTaKbwetEqBb0=";
+ String encrypted_value_md5hex = "MD5HEX:
259dd8fa3d8b604bd39ad6116352a1b3";
String encrypted_value_md5 = "MD5:JZ3Y
+j2LYEvTmtYRY1Khsw==";
String encrypted_value_obf = "OBF:
1w261wtu1ugo1vo41vmy1uh21wuk1w1c";
String encrypted_value_wrp =
"WRP:XRadzcqykoN26sWuGe0j85TRoOaErinQr0+QKWsy1hlTMJdtRMkLUo+A4S/Wr3xcj
+Va6jc0XLGfcWusuNMrcg==";
@@ -29,6 +30,7 @@
try
{
assertEquals(encrypted_value_sha,
StringEncryptor.adaptiveEncrypt(value, "SHA:123"));
+ assertEquals(encrypted_value_md5hex,
StringEncryptor.adaptiveEncrypt(value, "MD5HEX:123"));
assertEquals(encrypted_value_md5,
StringEncryptor.adaptiveEncrypt(value, "MD5:123"));
assertEquals(encrypted_value_obf,
StringEncryptor.adaptiveEncrypt(value, "OBF:123"));
assertEquals(encrypted_value_wrp,
StringEncryptor.adaptiveEncrypt(value, "WRP:123"));
@@ -100,6 +102,26 @@
}
}
+ 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 testEncryptMD5()
{
String value = "MD5:somevalue";
Index: src/framework/com/uwyn/rife/tools/StringEncryptor.java
===================================================================
--- src/framework/com/uwyn/rife/tools/StringEncryptor.java
(revision 3717)
+++ src/framework/com/uwyn/rife/tools/StringEncryptor.java
(working copy)
@@ -16,17 +16,20 @@
public class StringEncryptor extends EnumClass<String>
{
public static final String IDENTIFIER_OBF = "OBF";
+ public static final String IDENTIFIER_MD5HEX = "MD5HEX";
public static final String IDENTIFIER_MD5 = "MD5";
public static final String IDENTIFIER_SHA = "SHA";
public static final String IDENTIFIER_WHIRLPOOL = "WRP";
private static final String PREFIX_SUFFIX = ":";
private static final String PREFIX_OBF = IDENTIFIER_OBF
+PREFIX_SUFFIX;
+ private static final String PREFIX_MD5HEX =
IDENTIFIER_MD5HEX+PREFIX_SUFFIX;
private static final String PREFIX_MD5 = IDENTIFIER_MD5
+PREFIX_SUFFIX;
private static final String PREFIX_SHA = IDENTIFIER_SHA
+PREFIX_SUFFIX;
private static final String PREFIX_WHIRLPOOL =
IDENTIFIER_WHIRLPOOL+PREFIX_SUFFIX;
public static final StringEncryptor OBF = new
StringEncryptor(PREFIX_OBF);
+ public static final StringEncryptor MD5HEX = new
StringEncryptor(PREFIX_MD5HEX);
public static final StringEncryptor MD5 = new
StringEncryptor(PREFIX_MD5);
public static final StringEncryptor SHA = new
StringEncryptor(PREFIX_SHA);
public static final StringEncryptor WHIRLPOOL = new
StringEncryptor(PREFIX_WHIRLPOOL);
@@ -69,6 +72,18 @@
whirlpool.NESSIEfinalize(digest);
return PREFIX_WHIRLPOOL+Base64.encodeToString
(digest, false);
}
+ else if (value.startsWith(PREFIX_MD5HEX))
+ {
+ MessageDigest digest =
MessageDigest.getInstance("MD5");
+ digest.update(value.substring
(PREFIX_MD5HEX.length()).getBytes());
+ byte[] bytes = digest.digest();
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < bytes.length; ++i)
+ {
+ sb.append(Integer.toHexString((bytes[i] &
0xFF) | 0x100).substring(1, 3));
+ }
+ return PREFIX_MD5HEX+sb.toString();
+ }
else if (value.startsWith(PREFIX_MD5))
{
MessageDigest digest =
MessageDigest.getInstance("MD5");
@@ -108,6 +123,10 @@
{
clearValue = PREFIX_WHIRLPOOL+clearValue;
}
+ else if (encryptedValue.startsWith(PREFIX_MD5HEX))
+ {
+ clearValue = PREFIX_MD5HEX+clearValue;
+ }
else if (encryptedValue.startsWith(PREFIX_MD5))
{
clearValue = PREFIX_MD5+clearValue;
On Apr 17, 2007, at 12:17 AM, Geert Bevin wrote:
Thanks for this Jeremy,
actually for any code to be committed, I need a test that asserts
the behavior. Could you add what's needed to src/unittests/com/uwyn/
rife/tools/TestStringEncryptor.java and make sure the new
assertions succeed.
_______________________________________________
Rife-users mailing list
Rife-users@uwyn.com
http://lists.uwyn.com/mailman/listinfo/rife-users