«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
欢迎大家访问,希望大家多多交流!
    Email:hello105@ustc.edu
    QQ: 7779112
    

我的分类(专题)

首页(63)
Xml收藏(3)
Java收藏(17)
心情(11)
其他(32)


最新日志
DataStage 开发中遇到的几个问题
Tar的详细用法(转自Linux伊甸园)
UNIX常用命令-目录及文件操作命令(z
The 38 Subsystems of
DataStage安装
回来了!
rpm使用
学校好冷清阿
科大怪谈(1)
科大怪谈(2)

最新回复
回复:DataStage 开发中遇到的几
回复:DataStage 开发中遇到的几
回复:发放WALLOP邀请
回复:发放WALLOP邀请
回复:发放WALLOP邀请
回复:发放WALLOP邀请
回复:发放WALLOP邀请
回复:发放WALLOP邀请
回复:发放WALLOP邀请
回复:发放WALLOP邀请

留言板
签写新留言

为什么?
回学校了
关于wallop

统计
blog名称:hello105
日志总数:63
评论数量:174
留言数量:3
访问次数:396020
建立时间:2004年11月8日

链接

Lost Ferry

 




W3CHINA Blog首页    管理页面    写新日志    退出

[Java收藏]用Java编写的密码算法类 选择自 chrch 的 Blog
音乐昆虫 发表于 2004/12/17 14:40:34

package data; import java.security.*;import javax.crypto.*;import javax.crypto.spec.*;import java.io.*; /** * Security 提供了一个安全算法类,其中包括对称密码算法和散列算法 */public final class Security{ /**  * 对称加密方法  * @param byteSource 需要加密的数据  * @return 经过加密的数据  * @throws Exception  */ public static byte[] symmetricEncrypto(byte[] byteSource) throws Exception {  ByteArrayOutputStream baos = new ByteArrayOutputStream();  try  {   int mode = Cipher.ENCRYPT_MODE;   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");   byte[] keyData = {1, 9, 8, 2, 0, 8, 2, 1};   DESKeySpec keySpec = new DESKeySpec(keyData);   Key key = keyFactory.generateSecret(keySpec);   Cipher cipher = Cipher.getInstance("DES");   cipher.init(mode, key);   int blockSize = cipher.getBlockSize();   int position = 0;   int length = byteSource.length;   boolean more = true;   while(more)   {    if(position + blockSize <= length)    {     baos.write(cipher.update(byteSource, position, blockSize));     position += blockSize;    }    else    {     more = false;    }   }   if(position < length)   {    baos.write(cipher.doFinal(byteSource, position, length - position));   }   else   {    baos.write(cipher.doFinal());   }   return baos.toByteArray();  }  catch(Exception e)  {   throw e;  }  finally  {   baos.close();  } } /**  * 对称解密方法  * @param byteSource 需要解密的数据  * @return 经过解密的数据  * @throws Exception  */ public static byte[] symmetricDecrypto(byte[] byteSource) throws Exception {  ByteArrayOutputStream baos = new ByteArrayOutputStream();  try  {   int mode = Cipher.DECRYPT_MODE;   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");   byte[] keyData = {1, 9, 8, 2, 0, 8, 2, 1};   DESKeySpec keySpec = new DESKeySpec(keyData);   Key key = keyFactory.generateSecret(keySpec);   Cipher cipher = Cipher.getInstance("DES");   cipher.init(mode, key);   int blockSize = cipher.getBlockSize();   int position = 0;   int length = byteSource.length;   boolean more = true;   while(more)   {    if(position + blockSize <= length)    {     baos.write(cipher.update(byteSource, position, blockSize));     position += blockSize;    }    else    {     more = false;    }   }   if(position < length)   {    baos.write(cipher.doFinal(byteSource, position, length - position));   }   else   {    baos.write(cipher.doFinal());   }   return baos.toByteArray();  }  catch(Exception e)  {   throw e;  }  finally  {   baos.close();  } } /**  * 散列算法  * @param byteSource 需要散列计算的数据  * @return 经过散列计算的数据  * @throws Exception  */ public static byte[] hashMethod(byte[] byteSource) throws Exception {  try  {   MessageDigest currentAlgorithm = MessageDigest.getInstance("SHA-1");   currentAlgorithm.reset();   currentAlgorithm.update(byteSource);   return currentAlgorithm.digest();  }  catch(Exception e)  {   throw e;  } }} 作者Blog:http://blog.csdn.net/chrch/

阅读全文(2362) | 回复(0) | 编辑 | 精华


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.223 second(s), page refreshed 144766097 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号