2
0
Fork 0
mirror of https://github.com/ethauvin/rife2.git synced 2025-05-01 02:58:12 -07:00

Exposed hex conversion methods from StringUtils

This commit is contained in:
Geert Bevin 2023-01-17 10:17:16 -05:00
parent e447291be9
commit c61685cff9
2 changed files with 84 additions and 70 deletions

View file

@ -586,14 +586,21 @@ public final class StringUtils {
return UNRESERVED_URI_CHARS.get(ch); return UNRESERVED_URI_CHARS.get(ch);
} }
private static void appendUrlEncodedDigit(StringBuilder out, int digit) { /**
out.append(HEX_DIGITS[digit & 0x0F]); * Appends the hexadecimal digit of the provided number.
*
* @param out the string builder to append to
* @param number the number who's first digit will be appended in hexadecimal
* @since 1.0
*/
public static void appendHexDigit(StringBuilder out, int number) {
out.append(HEX_DIGITS[number & 0x0F]);
} }
private static void appendUrlEncodedByte(StringBuilder out, int ch) { private static void appendUrlEncodedByte(StringBuilder out, int ch) {
out.append("%"); out.append("%");
appendUrlEncodedDigit(out, ch >> 4); appendHexDigit(out, ch >> 4);
appendUrlEncodedDigit(out, ch); appendHexDigit(out, ch);
} }
/** /**
@ -1155,13 +1162,20 @@ public final class StringUtils {
return buffer.toString(); return buffer.toString();
} }
/**
* Generates a hexadecimal string for the provided byte array.
*
* @param bytes the byte array to convert to a hex string
* @return the converted hexadecimal string
* @since 1.0
*/
public static String encodeHex(byte[] bytes) { public static String encodeHex(byte[] bytes) {
var sb = new StringBuilder(); var out = new StringBuilder();
for (byte b : bytes) { for (byte b : bytes) {
sb.append(Integer.toHexString((b & 0xFF) | 0x100), 1, 3); appendHexDigit(out, b >> 4);
appendHexDigit(out, b);
} }
return sb.toString(); return out.toString();
} }
/** /**

View file

@ -13,15 +13,15 @@ import static org.junit.jupiter.api.Assertions.*;
public class TestStringEncryptor { public class TestStringEncryptor {
@Test @Test
void testAdaptiveEncrypt() { void testAdaptiveEncrypt() {
String encrypted_value_sha = "SHA:Hw/gszrpwzs0GnKTaKbwetEqBb0="; var encrypted_value_sha = "SHA:Hw/gszrpwzs0GnKTaKbwetEqBb0=";
String encrypted_value_shahex = "SHAHEX:1f0fe0b33ae9c33b341a729368a6f07ad12a05bd"; var encrypted_value_shahex = "SHAHEX:1F0FE0B33AE9C33B341A729368A6F07AD12A05BD";
String encrypted_value_md5 = "MD5:JZ3Y+j2LYEvTmtYRY1Khsw=="; var encrypted_value_md5 = "MD5:JZ3Y+j2LYEvTmtYRY1Khsw==";
String encrypted_value_md5hex = "MD5HEX:259dd8fa3d8b604bd39ad6116352a1b3"; var encrypted_value_md5hex = "MD5HEX:259DD8FA3D8B604BD39AD6116352A1B3";
String encrypted_value_obf = "OBF:1w261wtu1ugo1vo41vmy1uh21wuk1w1c"; var encrypted_value_obf = "OBF:1w261wtu1ugo1vo41vmy1uh21wuk1w1c";
String encrypted_value_wrp = "WRP:XRadzcqykoN26sWuGe0j85TRoOaErinQr0+QKWsy1hlTMJdtRMkLUo+A4S/Wr3xcj+Va6jc0XLGfcWusuNMrcg=="; var encrypted_value_wrp = "WRP:XRadzcqykoN26sWuGe0j85TRoOaErinQr0+QKWsy1hlTMJdtRMkLUo+A4S/Wr3xcj+Va6jc0XLGfcWusuNMrcg==";
String encrypted_value_wrphex = "WRPHEX:5d169dcdcab2928376eac5ae19ed23f394d1a0e684ae29d0af4f90296b32d6195330976d44c90b528f80e12fd6af7c5c8fe55aea37345cb19f716bacb8d32b72"; var encrypted_value_wrphex = "WRPHEX:5D169DCDCAB2928376EAC5AE19ED23F394D1A0E684AE29D0AF4F90296B32D6195330976D44C90B528F80E12FD6AF7C5C8FE55AEA37345CB19F716BACB8D32B72";
String encrypted_value_none = "thevalue"; var encrypted_value_none = "thevalue";
String value = "thevalue"; var value = "thevalue";
try { try {
assertEquals(encrypted_value_sha, StringEncryptor.adaptiveEncrypt(value, "SHA:123")); assertEquals(encrypted_value_sha, StringEncryptor.adaptiveEncrypt(value, "SHA:123"));
@ -39,14 +39,14 @@ public class TestStringEncryptor {
@Test @Test
void testEncryptorInstance() { void testEncryptorInstance() {
String encrypted_value_sha = "SHA:Hw/gszrpwzs0GnKTaKbwetEqBb0="; var encrypted_value_sha = "SHA:Hw/gszrpwzs0GnKTaKbwetEqBb0=";
String encrypted_value_shahex = "SHAHEX:1f0fe0b33ae9c33b341a729368a6f07ad12a05bd"; var encrypted_value_shahex = "SHAHEX:1F0FE0B33AE9C33B341A729368A6F07AD12A05BD";
String encrypted_value_md5 = "MD5:JZ3Y+j2LYEvTmtYRY1Khsw=="; var encrypted_value_md5 = "MD5:JZ3Y+j2LYEvTmtYRY1Khsw==";
String encrypted_value_md5hex = "MD5HEX:259dd8fa3d8b604bd39ad6116352a1b3"; var encrypted_value_md5hex = "MD5HEX:259DD8FA3D8B604BD39AD6116352A1B3";
String encrypted_value_obf = "OBF:1w261wtu1ugo1vo41vmy1uh21wuk1w1c"; var encrypted_value_obf = "OBF:1w261wtu1ugo1vo41vmy1uh21wuk1w1c";
String encrypted_value_wrp = "WRP:XRadzcqykoN26sWuGe0j85TRoOaErinQr0+QKWsy1hlTMJdtRMkLUo+A4S/Wr3xcj+Va6jc0XLGfcWusuNMrcg=="; var encrypted_value_wrp = "WRP:XRadzcqykoN26sWuGe0j85TRoOaErinQr0+QKWsy1hlTMJdtRMkLUo+A4S/Wr3xcj+Va6jc0XLGfcWusuNMrcg==";
String encrypted_value_wrphex = "WRPHEX:5d169dcdcab2928376eac5ae19ed23f394d1a0e684ae29d0af4f90296b32d6195330976d44c90b528f80e12fd6af7c5c8fe55aea37345cb19f716bacb8d32b72"; var encrypted_value_wrphex = "WRPHEX:5D169DCDCAB2928376EAC5AE19ED23F394D1A0E684AE29D0AF4F90296B32D6195330976D44C90B528F80E12FD6AF7C5C8FE55AEA37345CB19F716BACB8D32B72";
String value = "thevalue"; var value = "thevalue";
try { try {
assertEquals(encrypted_value_sha, StringEncryptor.SHA.encrypt(value)); assertEquals(encrypted_value_sha, StringEncryptor.SHA.encrypt(value));
@ -64,14 +64,14 @@ public class TestStringEncryptor {
@Test @Test
void testGetEncryptor() { void testGetEncryptor() {
String encrypted_value_sha = "SHA:Hw/gszrpwzs0GnKTaKbwetEqBb0="; var encrypted_value_sha = "SHA:Hw/gszrpwzs0GnKTaKbwetEqBb0=";
String encrypted_value_shahex = "SHAHEX:1f0fe0b33ae9c33b341a729368a6f07ad12a05bd"; var encrypted_value_shahex = "SHAHEX:1F0FE0B33AE9C33B341A729368A6F07AD12A05BD";
String encrypted_value_md5 = "MD5:JZ3Y+j2LYEvTmtYRY1Khsw=="; var encrypted_value_md5 = "MD5:JZ3Y+j2LYEvTmtYRY1Khsw==";
String encrypted_value_md5hex = "MD5HEX:259dd8fa3d8b604bd39ad6116352a1b3"; var encrypted_value_md5hex = "MD5HEX:259DD8FA3D8B604BD39AD6116352A1B3";
String encrypted_value_obf = "OBF:1w261wtu1ugo1vo41vmy1uh21wuk1w1c"; var encrypted_value_obf = "OBF:1w261wtu1ugo1vo41vmy1uh21wuk1w1c";
String encrypted_value_wrp = "WRP:XRadzcqykoN26sWuGe0j85TRoOaErinQr0+QKWsy1hlTMJdtRMkLUo+A4S/Wr3xcj+Va6jc0XLGfcWusuNMrcg=="; var encrypted_value_wrp = "WRP:XRadzcqykoN26sWuGe0j85TRoOaErinQr0+QKWsy1hlTMJdtRMkLUo+A4S/Wr3xcj+Va6jc0XLGfcWusuNMrcg==";
String encrypted_value_wrphex = "WRPHEX:5d169dcdcab2928376eac5ae19ed23f394d1a0e684ae29d0af4f90296b32d6195330976d44c90b528f80e12fd6af7c5c8fe55aea37345cb19f716bacb8d32b72"; var encrypted_value_wrphex = "WRPHEX:5D169DCDCAB2928376EAC5AE19ED23F394D1A0E684AE29D0AF4F90296B32D6195330976D44C90B528F80E12FD6AF7C5C8FE55AEA37345CB19F716BACB8D32B72";
String value = "thevalue"; var value = "thevalue";
try { try {
assertEquals(encrypted_value_sha, StringEncryptor.getEncryptor(StringEncryptor.SHA.name()).encrypt(value)); assertEquals(encrypted_value_sha, StringEncryptor.getEncryptor(StringEncryptor.SHA.name()).encrypt(value));
@ -89,10 +89,10 @@ public class TestStringEncryptor {
@Test @Test
void testEncryptPlain() { void testEncryptPlain() {
String value = "somevalue"; var value = "somevalue";
try { try {
String encrypted = StringEncryptor.autoEncrypt(value); var encrypted = StringEncryptor.autoEncrypt(value);
assertEquals(encrypted, value); assertEquals(encrypted, value);
assertTrue(StringEncryptor.matches(value, encrypted)); assertTrue(StringEncryptor.matches(value, encrypted));
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
@ -102,13 +102,13 @@ public class TestStringEncryptor {
@Test @Test
void testEncryptOBF() { void testEncryptOBF() {
String value = "somevalue"; var value = "somevalue";
String value2 = "somevalue"; var value2 = "somevalue";
String value3 = "somevalue2"; var value3 = "somevalue2";
String value4 = "SHA:somevalue"; var value4 = "SHA:somevalue";
try { try {
String encrypted = StringEncryptor.autoEncrypt("OBF:" + value); var encrypted = StringEncryptor.autoEncrypt("OBF:" + value);
assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(StringEncryptor.matches(value2, encrypted));
assertFalse(StringEncryptor.matches(value3, encrypted)); assertFalse(StringEncryptor.matches(value3, encrypted));
assertFalse(StringEncryptor.matches(value4, encrypted)); assertFalse(StringEncryptor.matches(value4, encrypted));
@ -121,13 +121,13 @@ public class TestStringEncryptor {
@Test @Test
void testEncryptMD5() { void testEncryptMD5() {
String value = "MD5:somevalue"; var value = "MD5:somevalue";
String value2 = "somevalue"; var value2 = "somevalue";
String value3 = "somevalue2"; var value3 = "somevalue2";
String value4 = "SHA:somevalue"; var value4 = "SHA:somevalue";
try { try {
String encrypted = StringEncryptor.autoEncrypt(value); var encrypted = StringEncryptor.autoEncrypt(value);
assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(StringEncryptor.matches(value2, encrypted));
assertFalse(StringEncryptor.matches(value3, encrypted)); assertFalse(StringEncryptor.matches(value3, encrypted));
assertFalse(StringEncryptor.matches(value4, encrypted)); assertFalse(StringEncryptor.matches(value4, encrypted));
@ -138,13 +138,13 @@ public class TestStringEncryptor {
@Test @Test
void testEncryptMD5HEX() { void testEncryptMD5HEX() {
String value = "MD5HEX:somevalue"; var value = "MD5HEX:somevalue";
String value2 = "somevalue"; var value2 = "somevalue";
String value3 = "somevalue2"; var value3 = "somevalue2";
String value4 = "SHA:somevalue"; var value4 = "SHA:somevalue";
try { try {
String encrypted = StringEncryptor.autoEncrypt(value); var encrypted = StringEncryptor.autoEncrypt(value);
assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(StringEncryptor.matches(value2, encrypted));
assertFalse(StringEncryptor.matches(value3, encrypted)); assertFalse(StringEncryptor.matches(value3, encrypted));
assertFalse(StringEncryptor.matches(value4, encrypted)); assertFalse(StringEncryptor.matches(value4, encrypted));
@ -155,13 +155,13 @@ public class TestStringEncryptor {
@Test @Test
void testEncryptSHA() { void testEncryptSHA() {
String value = "SHA:somevalue"; var value = "SHA:somevalue";
String value2 = "somevalue"; var value2 = "somevalue";
String value3 = "somevalue2"; var value3 = "somevalue2";
String value4 = "MD5:somevalue"; var value4 = "MD5:somevalue";
try { try {
String encrypted = StringEncryptor.autoEncrypt(value); var encrypted = StringEncryptor.autoEncrypt(value);
assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(StringEncryptor.matches(value2, encrypted));
assertFalse(StringEncryptor.matches(value3, encrypted)); assertFalse(StringEncryptor.matches(value3, encrypted));
assertFalse(StringEncryptor.matches(value4, encrypted)); assertFalse(StringEncryptor.matches(value4, encrypted));
@ -172,13 +172,13 @@ public class TestStringEncryptor {
@Test @Test
void testEncryptSHAHEX() { void testEncryptSHAHEX() {
String value = "SHAHEX:somevalue"; var value = "SHAHEX:somevalue";
String value2 = "somevalue"; var value2 = "somevalue";
String value3 = "somevalue2"; var value3 = "somevalue2";
String value4 = "MD5HEX:somevalue"; var value4 = "MD5HEX:somevalue";
try { try {
String encrypted = StringEncryptor.autoEncrypt(value); var encrypted = StringEncryptor.autoEncrypt(value);
assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(StringEncryptor.matches(value2, encrypted));
assertFalse(StringEncryptor.matches(value3, encrypted)); assertFalse(StringEncryptor.matches(value3, encrypted));
assertFalse(StringEncryptor.matches(value4, encrypted)); assertFalse(StringEncryptor.matches(value4, encrypted));
@ -189,13 +189,13 @@ public class TestStringEncryptor {
@Test @Test
void testEncryptWRP() { void testEncryptWRP() {
String value = "WRP:somevalue"; var value = "WRP:somevalue";
String value2 = "somevalue"; var value2 = "somevalue";
String value3 = "somevalue2"; var value3 = "somevalue2";
String value4 = "MD5:somevalue"; var value4 = "MD5:somevalue";
try { try {
String encrypted = StringEncryptor.autoEncrypt(value); var encrypted = StringEncryptor.autoEncrypt(value);
assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(StringEncryptor.matches(value2, encrypted));
assertFalse(StringEncryptor.matches(value3, encrypted)); assertFalse(StringEncryptor.matches(value3, encrypted));
assertFalse(StringEncryptor.matches(value4, encrypted)); assertFalse(StringEncryptor.matches(value4, encrypted));
@ -206,13 +206,13 @@ public class TestStringEncryptor {
@Test @Test
void testEncryptWRPHEX() { void testEncryptWRPHEX() {
String value = "WRPHEX:somevalue"; var value = "WRPHEX:somevalue";
String value2 = "somevalue"; var value2 = "somevalue";
String value3 = "somevalue2"; var value3 = "somevalue2";
String value4 = "MD5HEX:somevalue"; var value4 = "MD5HEX:somevalue";
try { try {
String encrypted = StringEncryptor.autoEncrypt(value); var encrypted = StringEncryptor.autoEncrypt(value);
assertTrue(StringEncryptor.matches(value2, encrypted)); assertTrue(StringEncryptor.matches(value2, encrypted));
assertFalse(StringEncryptor.matches(value3, encrypted)); assertFalse(StringEncryptor.matches(value3, encrypted));
assertFalse(StringEncryptor.matches(value4, encrypted)); assertFalse(StringEncryptor.matches(value4, encrypted));