|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
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; } } } 返回类别: 教程 上一教程: C#就是Java只不过差了一点点 下一教程: 访问控制 : 语言和平台 您可以阅读与"用Java编写的密码算法类"相关的教程: · JAVA代码编写的30条建议 · JAVA代码编写的30条建议 · JAVA代码编写的一般性指导 · Java编写的计算器程序及源代码 · JAVA代码编写的30条建议 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |