Skip to content

Commit

Permalink
minor enhancements
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@3344 6c8d7289-2bf4-0310-a012-ef5d649a1542
  • Loading branch information
orbiter committed Feb 6, 2007
1 parent b4aa195 commit 7673f08
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 28 deletions.
68 changes: 40 additions & 28 deletions source/de/anomic/server/serverCodings.java
Expand Up @@ -67,47 +67,59 @@ public static String encodeHex(long in, int length) {
return s;
}

public static String encodeOctal(byte[] in) {
if (in == null) return "";
StringBuffer result = new StringBuffer(in.length * 8 / 3);
for (int i = 0; i < in.length; i++) {
if ((0Xff & (int) in[i]) < 8) result.append('0');
result.append(Integer.toOctalString(0Xff & (int) in[i]));
}
return new String(result);
}

public static String encodeHex(byte[] in) {
if (in == null) return "";
String result = "";
for (int i = 0; i < in.length; i++)
result = result + (((0Xff & (int) in[i]) < 16) ? "0" : "") + Integer.toHexString(0Xff & (int) in[i]);
return result;
if (in == null) return "";
StringBuffer result = new StringBuffer(in.length * 2);
for (int i = 0; i < in.length; i++) {
if ((0Xff & (int) in[i]) < 16) result.append('0');
result.append(Integer.toHexString(0Xff & (int) in[i]));
}
return new String(result);
}

public static byte[] decodeHex(String hex) {
byte[] result = new byte[hex.length() / 2];
for (int i = 0; i < result.length; i++) {
result[i] = (byte) (16 * Integer.parseInt(hex.charAt(i * 2) + "", 16) + Integer.parseInt(hex.charAt(i * 2 + 1) + "", 16));
}
return result;
byte[] result = new byte[hex.length() / 2];
for (int i = 0; i < result.length; i++) {
result[i] = (byte) (16 * Integer.parseInt(hex.charAt(i * 2) + "", 16) + Integer.parseInt(hex.charAt(i * 2 + 1) + "", 16));
}
return result;
}

public static String encodeMD5Hex(String key) {
// generate a hex representation from the md5 of a string
return encodeHex(encodeMD5Raw(key));
// generate a hex representation from the md5 of a string
return encodeHex(encodeMD5Raw(key));
}

public static String encodeMD5Hex(File file) {
// generate a hex representation from the md5 of a file
return encodeHex(encodeMD5Raw(file));
// generate a hex representation from the md5 of a file
return encodeHex(encodeMD5Raw(file));
}

public static String encodeMD5Hex(byte[] b) {
// generate a hex representation from the md5 of a byte-array
return encodeHex(encodeMD5Raw(b));
// generate a hex representation from the md5 of a byte-array
return encodeHex(encodeMD5Raw(b));
}

public static byte[] encodeMD5Raw(String key) {
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.reset();
digest.update(key.getBytes());
return digest.digest();
} catch (java.security.NoSuchAlgorithmException e) {
System.out.println("Internal Error at md5:" + e.getMessage());
}
return null;
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.reset();
digest.update(key.getBytes());
return digest.digest();
} catch (java.security.NoSuchAlgorithmException e) {
System.out.println("Internal Error at md5:" + e.getMessage());
}
return null;
}

public static byte[] encodeMD5Raw(File file) {
Expand Down Expand Up @@ -181,7 +193,7 @@ public static HashMap string2map(String string, String separator) {
}

public static String map2string(Map m, String separator, boolean braces) {
final StringBuffer buf = new StringBuffer(512);
final StringBuffer buf = new StringBuffer(20 * m.size());
if (braces) { buf.append("{"); }
final Iterator i = m.entrySet().iterator();
while (i.hasNext()) {
Expand All @@ -192,7 +204,7 @@ public static String map2string(Map m, String separator, boolean braces) {
}
if (buf.length() > 1) { buf.setLength(buf.length() - 1); } // remove last separator
if (braces) { buf.append("}"); }
return buf.toString();
return new String(buf);
}

public static Set string2set(String string, String separator) {
Expand Down Expand Up @@ -220,7 +232,7 @@ public static String set2string(Set s, String separator, boolean braces) {
if (hasNext) buf.append(separator);
}
if (braces) buf.append("}");
return buf.toString();
return new String(buf);
}

public static void main(String[] s) {
Expand Down
8 changes: 8 additions & 0 deletions source/de/anomic/yacy/yacySeed.java
Expand Up @@ -312,6 +312,14 @@ public final void incRU(int count) {
dna.put(yacySeed.URL_IN, Integer.toString(Integer.parseInt(v) + count));
}

// 12 * 6 bit = 72 bit = 24 characters octal-hash
// octal hashes are used for cache-dumps that are DHT-ready
// cause: the natural order of octal hashes are the same as the b64-order of b64Hashes
// a hexhash cannot be used in such cases, and b64Hashes are not appropriate for file names
public static String b64Hash2octalHash(String b64Hash) {
return serverCodings.encodeOctal(kelondroBase64Order.enhancedCoder.decode(b64Hash));
}

// 12 * 6 bit = 72 bit = 18 characters hex-hash
public static String b64Hash2hexHash(String b64Hash) {
// the hash string represents 12 * 6 bit = 72 bits. This is too much for a long integer.
Expand Down

0 comments on commit 7673f08

Please sign in to comment.