1 加密
public static byte[] jiami() throws Exception
{
//密钥生成器
KeyGenerator key=KeyGenerator.getInstance("DESede");
/**初始化密钥生成器
* 该步骤一般指定密钥的长度。如果该步骤省略的话,
* 会根据算法自动使用默认的密钥长度。指定长度时,
* 若第一步密钥生成器使用的是“DES”算法,则密钥长度必须是56位;
* 若是“DESede”,则可以是112或168位,其中112位有效;若是“AES”,
* 可以是128, 192或256位;若是“Blowfish”,则可以是32至448之间可以被8整除的数;
* “HmacMD5”和“HmacSHA1”默认的密钥长度都是64个字节
*/
key.init(168);
//生成密钥
SecretKey secret=key.generateKey();
//生成一个密钥文件 miyao.bat 以后人家需要解密 你就提供他一个文件
FileOutputStream s=new FileOutputStream("c://miyao.bat");
ObjectOutputStream st=new ObjectOutputStream(s);
st.writeObject(secret);
//工厂模式获取Cipher实例 密码器
Cipher cp=Cipher.getInstance("DESede");
//初始化cipher ENCRYPT_MODE表示加密DECRYPT_MODE解密 后面一个参数是密钥
cp.init(Cipher.ENCRYPT_MODE, secret);
//定义一个明文
String pwd="liaomin999";
//获取字符串的utf-8字节码
byte[] by=pwd.getBytes("utf-8");
//对字节码机密 miby就是加密后的字节码
byte[] miby=cp.doFinal(by);
//获取密文字符串
return miby;
}
2解密
public static String jiemi(byte[] miwen) throws Exception
{
//通过提供的密钥文件 获取密钥对象 进行解密
FileInputStream s=new FileInputStream("c://miyao.bat");
ObjectInputStream st=new ObjectInputStream(s);
SecretKey secret=(SecretKey)st.readObject();
//工厂模式获取Cipher实例 密码器
Cipher cp=Cipher.getInstance("DESede");
//初始化cipher ENCRYPT_MODE表示加密DECRYPT_MODE解密 后面一个参数是密钥
cp.init(Cipher.DECRYPT_MODE, secret);
//对密文字节码进行解密 如果密码写入文件可以使用文件流读写成一个数组
byte[] miby=cp.doFinal(miwen);
//获取密文字符串
String minwen=new String(miby,"utf-8");
return minwen;
}
public static void main(String[] args) throws Exception {
byte[] miwen=jiami();
String minwen=jiemi(miwen);
System.out.println(minwen);
}