diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/MD5Util.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/CoderUtil.java
similarity index 82%
rename from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/MD5Util.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/CoderUtil.java
index ad01650..1245168 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/MD5Util.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/CoderUtil.java
@@ -17,15 +17,16 @@
 
 package org.apache.dubbo.admin.common.util;
 
+import org.apache.dubbo.common.io.Bytes;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
 
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 
-public class MD5Util {
+public class CoderUtil {
 
-    private static final Logger logger = LoggerFactory.getLogger(MD5Util.class);
+    private static final Logger logger = LoggerFactory.getLogger(CoderUtil.class);
     private static MessageDigest md;
     private static final char[] hexCode = "0123456789ABCDEF".toCharArray();
 
@@ -55,6 +56,16 @@
         return hash;
     }
 
+    public static String MD5_32bit(byte[] input) {
+        if (input == null || input.length == 0) {
+            return null;
+        }
+        md.update(input);
+        byte[] digest = md.digest();
+        String hash = convertToString(digest);
+        return hash;
+    }
+
     private static String convertToString(byte[] data) {
         StringBuilder r = new StringBuilder(data.length * 2);
         for (byte b : data) {
@@ -64,7 +75,7 @@
         return r.toString();
     }
 
-    public static void main(String[] args) {
-        System.out.println(MD5_16bit("fwjioejfiowejfiowjfiwfjowejfei"));
+    public static String decodeBase64(String source) {
+        return new String(Bytes.base642bytes(source));
     }
 }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
index a3c6405..a9c088d 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
@@ -41,16 +41,16 @@
 public class ConfigCenter {
 
 
-    @Value("${dubbo.config-center:}")
+    @Value("${admin.config-center:}")
     private String configCenter;
-    @Value("${dubbo.config-center.username:}")
+    @Value("${admin.config-center.username:}")
     private String username;
-    @Value("${dubbo.config-center.password:}")
+    @Value("${admin.config-center.password:}")
     private String password;
 
-    @Value("${dubbo.registry.address:}")
+    @Value("${admin.registry.address:}")
     private String registryAddress;
-    @Value("${dubbo.registry.group:}")
+    @Value("${admin.registry.group:}")
     private String group;
 
     private static String globalConfigPath = "config/dubbo/dubbo.properties";
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/ApolloConfiguration.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/ApolloConfiguration.java
index 13d4b2e..e776f2c 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/ApolloConfiguration.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/ApolloConfiguration.java
@@ -27,19 +27,19 @@
 @SPI("apollo")
 public class ApolloConfiguration implements GovernanceConfiguration {
 
-    @Value("${dubbo.apollo.token}")
+    @Value("${admin.apollo.token}")
     private String token;
 
-    @Value("${dubbo.apollo.cluster}")
+    @Value("${admin.apollo.cluster}")
     private String cluster;
 
-    @Value("${dubbo.apollo.namespace}")
+    @Value("${admin.apollo.namespace}")
     private String namespace;
 
-    @Value("${dubbo.apollo.env}")
+    @Value("${admin.apollo.env}")
     private String env;
 
-    @Value("${dubbo.apollo.appId}")
+    @Value("${admin.apollo.appId}")
     private String appId;
 
     private URL url;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/RegistryServerSync.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/RegistryServerSync.java
index 7a4a676..1cd7bb5 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/RegistryServerSync.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/RegistryServerSync.java
@@ -16,7 +16,7 @@
  */
 package org.apache.dubbo.admin.service;
 
-import org.apache.dubbo.admin.common.util.MD5Util;
+import org.apache.dubbo.admin.common.util.CoderUtil;
 import org.apache.dubbo.admin.common.util.Tool;
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
@@ -134,7 +134,7 @@
                 if (URL_IDS_MAPPER.containsKey(url.toFullString())) {
                     ids.put(URL_IDS_MAPPER.get(url.toFullString()), url);
                 } else {
-                    String md5 = MD5Util.MD5_16bit(url.toFullString());
+                    String md5 = CoderUtil.MD5_16bit(url.toFullString());
                     ids.put(md5, url);
                     URL_IDS_MAPPER.putIfAbsent(url.toFullString(), md5);
                 }
diff --git a/dubbo-admin-backend/src/main/resources/application.properties b/dubbo-admin-backend/src/main/resources/application.properties
index 28fa8d0..429a7c0 100644
--- a/dubbo-admin-backend/src/main/resources/application.properties
+++ b/dubbo-admin-backend/src/main/resources/application.properties
@@ -15,13 +15,13 @@
 # limitations under the License.
 #
 
-dubbo.config-center.username=username
-dubbo.config-center.password=password
-dubbo.config-center=zookeeper://127.0.0.1:2181
-dubbo.registry.group=dubbo
-dubbo.registry.address=zookeeper://127.0.0.1:2181
-dubbo.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
-dubbo.apollo.appId=test
-dubbo.apollo.env=dev
-dubbo.apollo.cluster=default
-dubbo.apollo.namespace=dubbo
+admin.config-center.username=username
+admin.config-center.password=password
+admin.config-center=zookeeper://127.0.0.1:2181
+admin.registry.group=dubbo
+admin.registry.address=zookeeper://127.0.0.1:2181
+admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
+admin.apollo.appId=test
+admin.apollo.env=dev
+admin.apollo.cluster=default
+admin.apollo.namespace=dubbo
