如何写文件让别人看不懂? 想自己写个授权文件,假如文件里面的内容是“截止使用日期:2011-01-01”,如何写让别人用记事本打开后看不懂(即防止别人修改),还有什么要注意的地方,请各位指点指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 outlook发送邮件加密就可以了,更保险点可以加签名,不过要下载签名插件 如果只是想简单的加密,下面有个很简单的例子。你可以看一下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 2010JAA5XGQX7RZ#-7D2HJQFri Jan 01 00:00:00 CST 2010Sat Jan 02 00:00:00 CST 2010JY0QL7X3BRZ#-5XMLAUSat Jan 02 00:00:00 CST 2010Mon Jan 24 12:45:10 CST 201114CHDE2BGP01#-KFR5TKMon Jan 24 12:45:10 CST 2011Mon Jan 24 12:46:43 CST 2011I7O1VS6BGP01#-KFNJPDMon Jan 24 12:46:43 CST 2011 上面的两个质数,可以随意更换(当然,最好实测一下),前一万个质数可以参考http://primes.utm.edu/lists/small/10000.txt36进制也可以改为16或者其他进制(最大36) 加密再解密撒,实在不会就把UTF-8文件生成别的格式。 这种需求一般加密再解密就可以了,如果要求不太高的话,可以从网上找一个加密算法,如RSA,如果要求比较高,就使用自己写的算法。 tomcat隔一段时间报错,重启后正常 怎么在JAVA中实现关键字过滤? extjs 和 Javascript各自的缺点 求源代码 精通Struts2(基于MVC的Java Web应用开发实战) 光盘,陈云芳,人民邮电 用STRUTS标签如果截取字符 javaEE hql多表查询求大师指导 spring,hibernate,mysql的中文问题? 一道Java RMI的题,高手请进!! 请问哪里有得下载ias等控件啊? 解析XML有没有什么好的方法,最好有源代码可以给我看看,谢谢,我现在正急需用 安装Eclipse问题 为什么jquery的ajax返回时不执行回调函数呢?
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