descbc算法java版
来源:互联网 发布:不求上进的玉子 知乎 编辑:程序博客网 时间:2024/04/29 03:02
descbc算法java版
import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.*; import sun.misc.*; /** * DES encryption algorithm, providing the encryption and decryption algorithm * for byte array and string * * @author : Yao (WICT) * @version 1.0 */ public class CryptionData { // The length of Encryptionstring should be 8 bytes and not be // a weak key private String EncryptionString; // The initialization vector should be 8 bytes private final byte[] EncryptionIV = { 0x11, 0x22, 0x4F, 0x58, (byte) 0x88, 0x10, 0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (byte) 0xCB, (byte) 0xDD, 0x55, 0x66, 0x77, 0x29, 0x74, (byte) 0x98, 0x30, 0x40, 0x36, (byte) 0xE2 }; //初始化向量 private final static String DES = "DES/CBC/PKCS5Padding"; //DES模式 /** * Saving key for encryption and decryption * * @param EncryptionString * String */ public CryptionData(String EncryptionString) { this.EncryptionString = EncryptionString; } /** * Encrypt a byte array * * @param SourceData * byte[] * @throws Exception * @return byte[] */ public byte[] EncryptionByteData(byte[] SourceData) throws Exception { byte[] retByte = null; // Create SecretKey object byte[] EncryptionByte = EncryptionString.getBytes();//明文转为byte DESKeySpec dks = new DESKeySpec(EncryptionByte);//声明一个具体加密构造器的特别密钥special key SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); //声明了一个DES的密钥工厂 SecretKey securekey = keyFactory.generateSecret(dks); //密钥生成器产生真正的DES密钥 // Create IvParameterSpec object with initialization vector IvParameterSpec spec = new IvParameterSpec(EncryptionIV); // Create Cipter object Cipher cipher = Cipher.getInstance(DES); // Initialize Cipher object cipher.init(Cipher.ENCRYPT_MODE, securekey, spec); //初始化加密构造器 // Encrypting data retByte = cipher.doFinal(SourceData); //完成加密 return retByte; //返回加密的byte } /** * Decrypt a byte array * * @param SourceData * byte[] * @throws Exception * @return byte[] */ public byte[] DecryptionByteData(byte[] SourceData) throws Exception { byte[] retByte = null; // Create SecretKey object byte[] EncryptionByte = EncryptionString.getBytes(); DESKeySpec dks = new DESKeySpec(EncryptionByte); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey securekey = keyFactory.generateSecret(dks); // Create IvParameterSpec object with initialization vector IvParameterSpec spec = new IvParameterSpec(EncryptionIV); // Create Cipter object Cipher cipher = Cipher.getInstance(DES); // Initialize Cipher object cipher.init(Cipher.DECRYPT_MODE, securekey, spec); // Decrypting data retByte = cipher.doFinal(SourceData); return retByte; } /** * Encrypt a string * * @param SourceData * String * @throws Exception * @return String */ public String EncryptionStringData(String SourceData) throws Exception { String retStr = null; byte[] retByte = null; // Transform SourceData to byte array byte[] sorData = SourceData.getBytes(); // Encrypte data retByte = EncryptionByteData(sorData); // Encode encryption data BASE64Encoder be = new BASE64Encoder(); retStr = be.encode(retByte); //以base64编码保存密文 return retStr; } /** * Decrypt a string * * @param SourceData * String * @throws Exception * @return String */ public String DecryptionStringData(String SourceData) throws Exception { String retStr = null; byte[] retByte = null; // Decode encryption data BASE64Decoder bd = new BASE64Decoder(); byte[] sorData = bd.decodeBuffer(SourceData); // Decrypting data retByte = DecryptionByteData(sorData); retStr = new String(retByte); return retStr; }
0 0
- descbc算法java版
- 汉诺塔JAVA版算法
- java版LCS算法
- XXTea算法Java版
- PageRank算法 java版
- KMP算法 -java版
- AHP算法--java版
- 排序算法 java 版
- 排序算法java版
- XXTea算法Java版
- java版KMP算法
- 查找算法Java版
- DTW算法java版
- 汉诺塔算法--java版
- 排序算法-java版
- 银行家算法(java版)
- BM算法(java版)
- KMP算法(java版)
- 指针常量和常量指针以及指向常量的常量指针
- poj3040
- base64算法源码c版
- EasyDarwin返回415 Unsupported Media Type解决方法
- cocos-js,内存管理2---计算图片占用内存
- descbc算法java版
- Service服务
- 截图工具
- 【unix网络编程第三版】阅读笔记(二):套接字编程简介
- 错误号org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
- 如何给nodejs开发的web 绑定域名
- 程序调试(1)GDB 基本使用
- 概念讲解+当前趋势:从RNN到LSTM
- java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解