package com.duduli.li;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class Eryptogram {
private static String Algorithm = "DES";
// 定义 加密算法,可用 DES,DESede,Blowfish
static boolean debug = false;
/**
* 构造子注解.
*/
public Eryptogram() {
}
/**
* 生成密钥
*
* @return byte[] 返回生成的密钥
* @throws exception
* 扔出异常.
*/
public static byte[] getSecretKey() throws Exception {
KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
SecretKey deskey = keygen.generateKey();
if (debug)
System.out.println("生成密钥:" + byte2hex(deskey.getEncoded()));
return deskey.getEncoded();
}
/**
* 将指定的数据根据提供的密钥进行加密
*
* @param input
* 需要加密的数据
* @param key
* 密钥
* @return byte[] 加密后的数据
* @throws Exception
*/
public static byte[] encryptData(byte[] input, byte[] key) throws Exception {
SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key, Algorithm);
if (debug) {
System.out.println("加密前的二进串:" + byte2hex(input));
System.out.println("加密前的字符串:" + new String(input));
}
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.ENCRYPT_MODE, deskey);
byte[] cipherByte = c1.doFinal(input);
if (debug)
System.out.println("加密后的二进串:" + byte2hex(cipherByte));
return cipherByte;
}
/**
* 将给定的已加密的数据通过指定的密钥进行解密
*
* @param input
* 待解密的数据
* @param key
* 密钥
* @return byte[] 解密后的数据
* @throws Exception
*/
public static byte[] decryptData(byte[] input, byte[] key) throws Exception {
SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key, Algorithm);
if (debug)
System.out.println("解密前的信息:" + byte2hex(input));
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.DECRYPT_MODE, deskey);
byte[] clearByte = c1.doFinal(input);
if (debug) {
System.out.println("解密后的二进串:" + byte2hex(clearByte));
System.out.println("解密后的字符串:" + (new String(clearByte)));
}
return clearByte;
}
/**
* 字节码转换成16进制字符串
*
* @param byte[] b 输入要转换的字节码
* @return String 返回转换后的16进制字符串
*/
public static String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
if (n < b.length - 1)
hs = hs + ":";
}
return hs.toUpperCase();
}
public static void main(String[] args) {
try {
debug = false;
Eryptogram etg = new Eryptogram();
byte[] key = etg.getSecretKey();
System.out.println("key = " + key);
String aa = "你要加密的信息。";
byte[] data = aa.getBytes();
System.out.println(data);
byte[] en = etg.encryptData(data, key);
System.out.println("encryptData = " + new String(en));
byte[] de = etg.decryptData(en, key);
System.out.println("decryptData = " + new String(de));
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
物超所值,受用终身 哈哈 WINFORM开发常用矢量小图标
《徐州汽车网》程序是由http//www.wangchao.it/在MediPro汽车门户网站系统的基础上改进而成的地方性汽车类整站程序。有新车报价、二手车、维修保养、汽车用品、汽车租赁、汽车培训、汽车资讯、商户名录等功能频道;...
ADO连接oracle数据库 的dll ,c++,详细讲解请到博客 http://blog.csdn.net/wangchao712217?ref=toolbar
-keep class im.wangchao.** { *; } -dontwarn im.wangchao.** -keep class **$$HttpBinder { *; } -keepclasseswithmembernames class * { @im.wangchao.* ; } -keepclasseswithmembernames class * { @im....
IE Tab 让Chrome兼容IE 在Chrome兼容IE 中组件的使用 https://blog.csdn.net/wangchao1988ok/article/details/45193489 使用方法
讲解见csdn http://blog.csdn.net/wangchao712217/article/details/79192455
NULL 博文链接:https://lc-wangchao.iteye.com/blog/652749
计算器 博文链接:https://lc-wangchao.iteye.com/blog/615304
资源为 chrome 浏览器调用 ocx 插件配套文件,具体使用方法请参考 http://blog.csdn.net/wangchao1988ok/article/details/45193489
NULL 博文链接:https://wangchao1982.iteye.com/blog/623352
NULL 博文链接:https://wangchao1982.iteye.com/blog/630655
使用方法讲解在我的博客上 http://blog.csdn.net/wangchao712217?ref=toolbar
资源为 chrome 浏览器调用 ocx 插件配套文件,具体使用方法请参考 http://blog.csdn.net/wangchao1988ok/article/details/45193489
资源为 chrome 浏览器调用 ocx 插件配套文件,具体使用方法请参考 http://blog.csdn.net/wangchao1988ok/article/details/45193489
NULL 博文链接:https://lc-wangchao.iteye.com/blog/652165
chrome参考示例调用ocx 适用于谷歌浏览器v45 版本以下 参考使用方法 https://blog.csdn.net/wangchao1988ok/article/details/45193489
NULL 博文链接:https://wangchao-17915566.iteye.com/blog/408517
NULL 博文链接:https://wangchao-0625.iteye.com/blog/338673