昨天在一个班尝试使用软件在机房进行内测,节约纸张,加速批改速度,可惜很多学生把精力用在了如何找软件的漏洞进行作弊上。
之前也知道在交卷这个环节上,每个人生成一个xml文件然后放在中心服务器上是很危险的,但还是幻想大家会自觉不去看别人的,结果嘛…………
其实也可以理解,记得原来在日资公司每天中午要求写日语作文,然后传到服务器上,我每次也是去别人的目录拷贝一个,然后修改之
。不过性质不一样啊,咱是在糊弄小日本,而内测作弊无疑是在糊弄自己。于是逼着对答卷进行了加密。
jdk1.4之后就自带了一些加密算法,可逆的,不可逆的,对称的,非对称的等等,我用的是经典的
DES算法,当然,有了sun的API,不用自己去实现这个算法。
DES算法需要这么三个参数:密钥,模型(加密或解密),内容
以下是通过一个字符串产生密钥的代码:
public SecretKey makeSecretKey(String s)
{
DESKeySpec
desKey = new DESKeySpec(s.getBytes());
SecretKeyFactory
factory = SecretKeyFactory.getInstance("DES");
SecretKey
secretKey = factory.generateSecret(desKey);
return
secretKey;
}
我采用学员的名字(也就是文件名)作为密钥,杜绝了拷贝复制的可能
接下来是加密和解密的代码(代码只有一字之差):
public static byte[] encrypt(SecretKey
secretKey, byte[] source) {
Cipher cipher
= Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE,secretKey);
byte target[]
= cipher.doFinal(source);
return
target;
}
public static byte[] decrypt(SecretKey secretKey,
byte[] source) {
Cipher cipher
= Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE,secretKey);
byte target[]
= cipher.doFinal(source);
return
target;
}
至此一个简单的加密、解密就做完了,查了一下资料,现在要破解DES(暴力破解)大概需要1台20万美元的服务器运行1小时,应该问题不大了。当然,还有一些人对DES的56位加密强度不满意,采用三次DES的方法,那就更保险了
。
文章来源:
http://blog.sina.com.cn/u/4a5ca024010006tp