常用加密解密算法
来源:互联网 发布:数据采集设备检测标准 编辑:程序博客网 时间:2024/06/09 19:08
AES加密算法
package com.xxx.util;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;/** * @author YLBF * * @category 类说明 AES算法 */public class AESCoder { private static String encoding = "UTF-8"; public static String encrypt(String seed, String cleartext) throws Exception { byte[] rawKey = getRawKey(seed.getBytes()); byte[] result = encrypt(rawKey, cleartext.getBytes()); return toHex(result); } public static String decrypt(String seed, String encrypted) throws Exception { byte[] rawKey = getRawKey(seed.getBytes()); byte[] enc = toByte(encrypted); byte[] result = decrypt(rawKey, enc); return new String(result); } private static byte[] getRawKey(byte[] seed) throws Exception { KeyGenerator kgen = KeyGenerator.getInstance("AES"); SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "Crypto"); sr.setSeed(seed); kgen.init(128, sr); // 192 and 256 bits may not be available SecretKey skey = kgen.generateKey(); byte[] raw = skey.getEncoded(); return raw; } private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec, new IvParameterSpec( new byte[cipher.getBlockSize()])); byte[] encrypted = cipher.doFinal(clear); return encrypted; } private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE, skeySpec, new IvParameterSpec( new byte[cipher.getBlockSize()])); byte[] decrypted = cipher.doFinal(encrypted); return decrypted; } private static String toHex(String txt) { return toHex(txt.getBytes()); } private static String fromHex(String hex) { return new String(toByte(hex)); } private static byte[] toByte(String hexString) { int len = hexString.length() / 2; byte[] result = new byte[len]; for (int i = 0; i < len; i++) result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2), 16).byteValue(); return result; } private static String toHex(byte[] buf) { if (buf == null) return ""; StringBuffer result = new StringBuffer(2 * buf.length); for (int i = 0; i < buf.length; i++) { appendHex(result, buf[i]); } return result.toString(); } private final static String HEX = "0123456789ABCDEF"; private static void appendHex(StringBuffer sb, byte b) { sb.append(HEX.charAt((b >> 4) & 0x0f)).append(HEX.charAt(b & 0x0f)); }}
DES算法
package com.xxx.util;import java.security.*;import javax.crypto.Cipher;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import android.util.Base64;/** * @author YLBF * * @category 类说明 Des 64位算法 */public class DESCoder { private static String encoding = "UTF-8"; // 密钥 private String sKey = ""; public DESCoder(String sKey) { this.sKey = sKey; } /** * 加密字符串 */ public String ebotongEncrypto(String str) { String result = str; if (str != null && str.length() > 0) { try { byte[] encodeByte = symmetricEncrypto(str.getBytes(encoding)); result = Base64.encodeToString(encodeByte, Base64.CRLF); } catch (Exception e) { e.printStackTrace(); } } return result; } /** * 解密字符串 */ public String ebotongDecrypto(String str) { String result = str; if (str != null && str.length() > 0) { try { byte[] encodeByte = Base64.decode(str, Base64.CRLF); byte[] decoder = symmetricDecrypto(encodeByte); result = new String(decoder, encoding); } catch (Exception e) { e.printStackTrace(); } } return result; } /** * 加密byte[] */ public byte[] ebotongEncrypto(byte[] str) { byte[] result = null; if (str != null && str.length > 0) { try { byte[] encodeByte = symmetricEncrypto(str); result = Base64.encode(encodeByte, Base64.CRLF); } catch (Exception e) { e.printStackTrace(); } } return result; } /** * 解密byte[] */ public byte[] ebotongDecrypto(byte[] str) { byte[] result = null; if (str != null && str.length > 0) { try { byte[] encodeByte = Base64.decode(new String(str, encoding), Base64.CRLF); // byte[] encodeByte = base64decoder.decodeBuffer(new // String(str)); byte[] decoder = symmetricDecrypto(encodeByte); result = new String(decoder).getBytes(encoding); result = new String(decoder).getBytes(); } catch (Exception e) { e.printStackTrace(); } } return result; } /** * 对称加密字节数组并返回 * * @param byteSource * 需要加密的数据 * @return 经过加密的数据 * @throws Exception */ public byte[] symmetricEncrypto(byte[] byteSource) throws Exception { try { int mode = Cipher.ENCRYPT_MODE; SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); byte[] keyData = sKey.getBytes(); DESKeySpec keySpec = new DESKeySpec(keyData); Key key = keyFactory.generateSecret(keySpec); Cipher cipher = Cipher.getInstance("DES"); cipher.init(mode, key); byte[] result = cipher.doFinal(byteSource); return result; } catch (Exception e) { throw e; } finally { } } /** * 对称解密字节数组并返回 * * @param byteSource * 需要解密的数据 * @return 经过解密的数据 * @throws Exception */ public byte[] symmetricDecrypto(byte[] byteSource) throws Exception { try { int mode = Cipher.DECRYPT_MODE; SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); byte[] keyData = sKey.getBytes(); DESKeySpec keySpec = new DESKeySpec(keyData); Key key = keyFactory.generateSecret(keySpec); Cipher cipher = Cipher.getInstance("DES"); cipher.init(mode, key); byte[] result = cipher.doFinal(byteSource); return result; } catch (Exception e) { throw e; } finally { } } /** * 散列算法 * * @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; } }}
0 0
- 常用加密解密算法
- 常用加密解密算法
- 加密解密、信息摘要常用算法收集~~
- 加密解密、信息摘要常用算法收集~~
- 目前常用的加密解密算法
- 目前常用的加密解密算法
- JAVA加密解密之常用签名算法
- 目前常用的加密解密算法下
- 目前常用的加密解密算法
- 常用加密与解密算法示例代码
- 常用加密解密方法
- 常用加密解密方法
- 常用加密解密方法
- php常用加密解密
- 常用的加密解密及编码解码算法
- java 常用加密解密算法汇总(一)
- 第十二篇:JAVA加密解密之常用签名算法
- 【加密】DES加密解密算法
- 大规模高性能网站架构设计思路整理
- IOS开发 - keychain的使用
- ffmpeg 安装libmp3lame 编码集
- puppet自动化部署
- 启东微商代理hc0
- 常用加密解密算法
- linux下ln命令学习
- QT中PRO文件写法
- Linux下的I2S驱动学习
- win7下,mingw 方式安装ffmpeg
- 正则表达式(检测手机号、检测邮箱)
- 【hive】hive与hbase数据交互的详解指南
- 前序 中序 后序 遍历二叉树 - 前缀 中缀 后缀 表达式
- django模板使用