含有许多JAVA的技巧!

源代码在线查看: 用java编写的密码算法类.txt

软件大小: 519 K
上传用户: supertruman
关键词: JAVA
下载地址: 免注册下载 普通下载 VIP

相关代码

				用Java编写的密码算法类 
				(加入日期:2004-12-20 点击数:468)
				【对此文发表评论】 【编程爱好者论坛】 【保存文章至硬盘】 【打印文章】 
				 
				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 				    {
				     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 				    {
				     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;
				  }
				}
				}
				
				本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( ProgramFan.Com )
				 
							

相关资源