Board logo

标题: 用Java编写的密码算法类 [打印本页]

作者: 漫天樱舞    时间: 2005-7-24 11:07     标题: 用Java编写的密码算法类

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; } } }
作者: 我是中国人    时间: 2005-7-25 22:46     标题: 用Java编写的密码算法类

这个对我很有用的,收下了谢谢




欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/) Powered by Discuz! 7.2