当前位置: 代码迷 >> J2SE >> hash值,该怎么处理
  详细解决方案

hash值,该怎么处理

热度:4888   发布时间:2013-02-25 00:00:00.0
hash值
Java code
程序启动时,各个参数缺省值从配置文件读取。在配置文件的最后增加一Hash值,该值由配置文件的各个参数计算得到,用于验证完整性,避免随意更改该文件。

怎么做?

------解决方案--------------------------------------------------------
问题是你的hash值要怎么计算呀,你可以自订一个hash算法。下面这个是String的hashCode的算法。
Java code
    public int hashCode() {    int h = hash;    if (h == 0) {        int off = offset;        char val[] = value;        int len = count;            for (int i = 0; i < len; i++) {                h = 31*h + val[off++];            }            hash = h;        }        return h;    }
------解决方案--------------------------------------------------------
把所有参数的名称和值全部串起来合并成一个字符串,然后直接用该字符串的hash值就好了。
------解决方案--------------------------------------------------------
如果配置文件内容是:
student=li
number=2012
那么,字符串是:
String content = "studentlinumber2012";
最后的hash值是:
int hash = content.hashCode();
------解决方案--------------------------------------------------------
为什么一定要hash呢,把所有字符加起来md5一下也可以,位数也只有16位或32位
------解决方案--------------------------------------------------------
hash的存在为了加快检索能力吧。
------解决方案--------------------------------------------------------
楼主只要要避免随意更改配置文件啦... 这个不用hash值.. 你直接算文件的MD5就可以啦.. 
算出来的MD5保存下来, 下次读文件的时候验证一下, 就可以了.