diff --git a/router/java/src/net/i2p/router/crypto/FamilyKeyCrypto.java b/router/java/src/net/i2p/router/crypto/FamilyKeyCrypto.java
index 2bb6038c546789247e01d8fad04a582772fbbef0..f69e62752d791f0b7dfc7b023579013a0a85ab78 100644
--- a/router/java/src/net/i2p/router/crypto/FamilyKeyCrypto.java
+++ b/router/java/src/net/i2p/router/crypto/FamilyKeyCrypto.java
@@ -134,7 +134,7 @@ public class FamilyKeyCrypto {
             throw new GeneralSecurityException("sig failed");
         Map<String, String> rv = new HashMap<String, String>(3);
         rv.put(OPT_NAME, family);
-        rv.put(OPT_KEY, _pubkey.getType().getCode() + ";" + _pubkey.toBase64());
+        rv.put(OPT_KEY, _pubkey.getType().getCode() + ":" + _pubkey.toBase64());
         rv.put(OPT_SIG, sig.toBase64());
         return rv;
     }
@@ -174,13 +174,16 @@ public class FamilyKeyCrypto {
                 // look for a b64 key in the RI
                 String skey = ri.getOption(OPT_KEY);
                 if (skey != null) {
-                    int semi = skey.indexOf(";");
-                    if (semi > 0) {
+                    int colon = skey.indexOf(':');
+                    // switched from ';' to ':' during dev, remove this later
+                    if (colon < 0)
+                        colon = skey.indexOf(';');
+                    if (colon > 0) {
                         try {
-                            int code = Integer.parseInt(skey.substring(0, semi));
+                            int code = Integer.parseInt(skey.substring(0, colon));
                             SigType type = SigType.getByCode(code);
                             if (type != null) {
-                                byte[] bkey = Base64.decode(skey.substring(semi + 1));
+                                byte[] bkey = Base64.decode(skey.substring(colon + 1));
                                 if (bkey != null) {
                                     spk = new SigningPublicKey(type, bkey);
                                 }