使用密钥加密、解密实例
2017-05-03 22:49
162 查看
package com.xiaohe.mianshi1;
import java.io.IOException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;
public class DesUtil {
private final static String DES = “DES”;
}
import java.io.IOException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;
public class DesUtil {
private final static String DES = “DES”;
public static void main(String[] args) { String data = "我爱你!!"; String key = "123116爱11"; System.out.println(enctypt(data, key)); System.out.println(decrypt(enctypt(data, key), key)); } public static String enctypt(String data, String key) { byte[] bt = encrypt(data.getBytes(), key.getBytes()); String strs = new BASE64Encoder().encode(bt); return strs; } public static String decrypt(String data, String key) { System.out.println("data++++" + data); if (data == null) { return null; } BASE64Decoder decoder = new BASE64Decoder(); byte[] buf = null; try { buf = decoder.decodeBuffer(data); } catch (IOException e) { // TODO Auto-generated catch block System.out.println(1); e.printStackTrace(); } byte[] bt = decrypt(buf, key.getBytes()); return new String(bt); } /* * 加密 */ private static byte[] encrypt(byte[] data, byte[] key) { // 生成一个可信任随机的数源 try { SecureRandom sr = new SecureRandom(); // 从原始密码数据创建DESkeySpec DESKeySpec dks = new DESKeySpec(key); // 创建一个密钥工厂,然后用它把DESKeySpec转换为SecrekKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey secretKey = keyFactory.generateSecret(dks); // Cipher对象实机完成加密操作 Cipher cipher = Cipher.getInstance(DES); // 用密钥初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, secretKey, sr); return cipher.doFinal(data); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } /* * 解密 */ private static byte[] decrypt(byte[] data, byte[] key) { try { // 生成一个可信任随机的数源 SecureRandom sr = new SecureRandom(); // 从原始密码数据创建DESkeySpec DESKeySpec dks = new DESKeySpec(key); // 创建一个密钥工厂,然后用它把DESKeySpec转换为SecrekKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey secretKey = keyFactory.generateSecret(dks); // Cipher对象实机完成加密操作 Cipher cipher = Cipher.getInstance(DES); // 用密钥初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, secretKey, sr); return cipher.doFinal(data); } catch (Exception e) { // TODO Auto-generated catch block System.out.println("大事不好,您的系统受到严重攻击!!!"); return null; } }
}
相关文章推荐
- 解密CSS Sprites的使用技巧及经典实例
- Java使用AES加密和解密的实例详解
- 使用DES加密解密代码实例
- 解密CSS Sprites的使用技巧及经典实例
- android使用AES加密和解密文件实例代码
- JS使用插件cryptojs进行加密解密数据实例
- mfc 对话框 Crypto++库在VS 2013中的使用——RSA加解密实例。
- 解密CSS Sprites的使用技巧及经典实例
- asp.net发送邮件,使用MD5加密解密,实现用户注册完成后发送流水号(账号)到对方邮箱,jeasyUI验证,combobox的使用完成 实例下载
- Java使用异或运算实现简单的加密解密算法实例代码
- php使用异或实现的加密解密实例
- JS使用插件cryptojs进行加密解密数据实例
- 解密CSS Sprites的使用技巧及经典实例
- php使用异或实现的加密解密实例
- java中使用DES加密解密实例
- Java加密部署,使用自定义的classloader解密的方法实例
- 利用CVSNT在Eclipse中使用CVS--3.创建一个CVS实例
- JDK 1.5 特性使用实例1--Generics
- 通过实例说明J2ME通用联网框架的使用
- JDK 1.5 特性使用实例6--staticimport