diff --git a/core/java/src/net/i2p/client/naming/HostsTxtNamingService.java b/core/java/src/net/i2p/client/naming/HostsTxtNamingService.java
index 9fa227f817be8050c5a939f3289a067095e50007..054bd9d8f10c03eff4d0df7bc6f4ecba58a5dc0b 100644
--- a/core/java/src/net/i2p/client/naming/HostsTxtNamingService.java
+++ b/core/java/src/net/i2p/client/naming/HostsTxtNamingService.java
@@ -16,8 +16,10 @@ import java.util.Set;
 import java.util.StringTokenizer;
 
 import net.i2p.I2PAppContext;
+import net.i2p.data.DataFormatException;
 import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
+import net.i2p.data.Hash;
 import net.i2p.util.Log;
 
 /**
@@ -135,4 +137,34 @@ public class HostsTxtNamingService extends NamingService {
         }
         return null;
     }
+
+    @Override
+    public String reverseLookup(Hash h) {
+        List filenames = getFilenames();
+        for (int i = 0; i < filenames.size(); i++) { 
+            String hostsfile = (String)filenames.get(i);
+            Properties hosts = new Properties();
+            try {
+                File f = new File(hostsfile);
+                if ( (f.exists()) && (f.canRead()) ) {
+                    DataHelper.loadProps(hosts, f, true);
+                    Set keyset = hosts.keySet();
+                    Iterator iter = keyset.iterator();
+                    while (iter.hasNext()) {
+                        String host = (String)iter.next();
+                        String key = hosts.getProperty(host);
+                        try {
+                            Destination destkey = new Destination();
+                            destkey.fromBase64(key);
+                            if (h.equals(destkey.calculateHash()))
+                                return host;
+                        } catch (DataFormatException dfe) {}
+                    }
+                }
+            } catch (Exception ioe) {
+                _log.error("Error loading hosts file " + hostsfile, ioe);
+            }
+        }
+        return null;
+    }
 }
diff --git a/core/java/src/net/i2p/client/naming/NamingService.java b/core/java/src/net/i2p/client/naming/NamingService.java
index 5b61b1bcf811aa04f02d0a6c36c66a8f95cfb6ba..ee02ec911138ca2e5e3f3094be678f85140f5e09 100644
--- a/core/java/src/net/i2p/client/naming/NamingService.java
+++ b/core/java/src/net/i2p/client/naming/NamingService.java
@@ -16,6 +16,7 @@ import java.util.Map;
 import net.i2p.I2PAppContext;
 import net.i2p.data.DataFormatException;
 import net.i2p.data.Destination;
+import net.i2p.data.Hash;
 import net.i2p.util.Log;
 
 /**
@@ -61,6 +62,7 @@ public abstract class NamingService {
      * <code>null</code> if no reverse lookup is possible.
      */
     public abstract String reverseLookup(Destination dest);
+    public String reverseLookup(Hash h) { return null; };
 
     /**
      * Check if host name is valid Base64 encoded dest and return this