« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
|
|
公告 |
欢迎大家访问,希望大家多多交流!
Email:hello105@ustc.edu
QQ: 7779112
|
统计 |
blog名称:hello105 日志总数:63 评论数量:174 留言数量:3 访问次数:396020 建立时间:2004年11月8日 |
| 
|
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) | 编辑 | 精华 |
|