本博客不再更新

本博客不再更新,请访问http://blog.sina.com.cn/fulaoshi

统计

最新评论

[导入]逼出来的加密

    昨天在一个班尝试使用软件在机房进行内测,节约纸张,加速批改速度,可惜很多学生把精力用在了如何找软件的漏洞进行作弊上。
 
    之前也知道在交卷这个环节上,每个人生成一个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

posted on 2007-03-21 23:30 本博客不再更新 阅读(163) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: