想自己写个授权文件,假如文件里面的内容是“截止使用日期:2011-01-01”,如何写让别人用记事本打开后看不懂(即防止别人修改),还有什么要注意的地方,请各位指点指点

解决方案 »

  1.   

    outlook发送邮件加密就可以了,更保险点可以加签名,不过要下载签名插件
      

  2.   

    如果只是想简单的加密,下面有个很简单的例子。你可以看一下public class Test {  public static void main(String[] args) throws Exception {
        Date expiry = new Date();
        System.out.println(expiry);
        String code = encode(expiry);
        System.out.println(code);
        Date date = decode(code);
        System.out.println(date);
      }  public static String encode(Date expiry) {
        long time = expiry.getTime();
        int prime1 = 103567; // 这两个都是质数
        int prime2 = 92251;
        long num = time * prime1 + prime2;
        // 36进制(0-9,a-z)倒过来排序
        StringBuilder buff = new StringBuilder(Long.toString(num, 36)).reverse();
        // 进行简单的摘要
        int hashCode = expiry.hashCode() ^ prime1;
        buff.append("#").append(Integer.toString(hashCode, 36));
        return buff.toString().toUpperCase();
      }  public static Date decode(String code) throws Exception {
        String code1 = code.replaceAll("#.*$", "");
        String reversedCode = new StringBuilder(code1).reverse().toString();
        long num = Long.parseLong(reversedCode, 36);
        int prime1 = 103567; // 这两个都是质数
        int prime2 = 92251;
        long time = (num - prime2) / prime1;
        if (time * prime1 + prime2 != num) {
          throw new IllegalArgumentException();
        }
        Date expiry = new Date(time);
        // 摘要验证
        int hashCode = expiry.hashCode() ^ prime1;
        String digest = code.replaceAll("^.*#", "");
        if (hashCode != Integer.parseInt(digest, 36)) {
          throw new IllegalArgumentException();
        }
        return expiry;
      }
    }Fri Jan 01 00:00:00 CST 2010
    JAA5XGQX7RZ#-7D2HJQ
    Fri Jan 01 00:00:00 CST 2010Sat Jan 02 00:00:00 CST 2010
    JY0QL7X3BRZ#-5XMLAU
    Sat Jan 02 00:00:00 CST 2010Mon Jan 24 12:45:10 CST 2011
    14CHDE2BGP01#-KFR5TK
    Mon Jan 24 12:45:10 CST 2011Mon Jan 24 12:46:43 CST 2011
    I7O1VS6BGP01#-KFNJPD
    Mon Jan 24 12:46:43 CST 2011
      

  3.   

    上面的两个质数,可以随意更换(当然,最好实测一下),前一万个质数可以参考http://primes.utm.edu/lists/small/10000.txt36进制也可以改为16或者其他进制(最大36)
      

  4.   

    加密再解密撒,实在不会就把UTF-8文件生成别的格式。
      

  5.   

    这种需求一般加密再解密就可以了,如果要求不太高的话,可以从网上找一个加密算法,如RSA,如果要求比较高,就使用自己写的算法。