package com.test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
public class CipherTest
{
public static void main(String[] args)
{
try
{
//secretEncrypt();
secretDecrypt();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void secretEncrypt() throws NoSuchAlgorithmException,
NoSuchPaddingException, InvalidKeyException, FileNotFoundException,
IOException, IllegalBlockSizeException, BadPaddingException
{
Cipher cipher = Cipher.getInstance("AES");
SecretKey key = KeyGenerator.getInstance("AES").generateKey();
//加密
cipher.init(Cipher.ENCRYPT_MODE, key);
OutputStream os = new FileOutputStream("secret_key");
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(key);
oos.close();
os.close();
byte[] result = cipher.doFinal("aab".getBytes());
os = new FileOutputStream("secret_data");
BufferedOutputStream bos = new BufferedOutputStream(os);
bos.write(result);
bos.close();
os.close();
System.out.println(new String(result));
}
private static void secretDecrypt() throws NoSuchAlgorithmException,
NoSuchPaddingException, FileNotFoundException, IOException,
ClassNotFoundException, InvalidKeyException,
IllegalBlockSizeException, BadPaddingException
{
//解密
Cipher cipher = Cipher.getInstance("AES");
InputStream is = new FileInputStream("secret_key");
ObjectInputStream ois = new ObjectInputStream(is);
SecretKey key = (SecretKey)ois.readObject();
ois.close();
is.close();
cipher.init(Cipher.DECRYPT_MODE, key);
is = new FileInputStream("secret_data");
BufferedInputStream bis = new BufferedInputStream(is);
// ByteArrayOutputStream baos = new ByteArrayOutputStream();
//方法一:
// byte[] rs = new byte[1024];
// int length = 0;
// while((length = bis.read(rs)) != -1){
// baos.write(rs, 0, length);
// }
//方法二:
byte[] rs = new byte[bis.available()];
int length = bis.read(rs);
int total = 0;
while(total < bis.available()){
total += length;
length = bis.read(rs, total, bis.available() - total);
}
//System.out.println(new String(cipher.doFinal(baos.toByteArray())));
System.out.println(new String(cipher.doFinal(rs)));
// baos.close();
bis.close();
is.close();
}
}
分享到:
相关推荐
CIPHER加密解密等多种算法
MyBatis-Cipher 是一款基于 Java 语言开发的数据库敏感信息加密解密方案,专为 MyBatis 设计。它能够在数据进出数据库(DB)的过程中自动对敏感信息进行脱敏处理,极大提高了数据安全性,同时避免了开发者手动实现...
目前这个工具支持对称加密算法(AES、3DES)、非对称加密算法(RSA)、单向散列算法(MD5、SHA1、CRC32)、Base64算法等,后期还会不定时新增别的算法,在使用过程中如有问题欢迎邮件给我,我会及时优化和反馈。
Affine Ceasar Cipher 加密解密字母,C=[(a,b),p]=(a*p+b) mod 26.
Delphi 开发的AES 等对称加密解密控件 1.AES算法 AES-128-CBC、AES-192-CBC、AES-256-CBC; AES-128-CFB、AES-192-CFB、AES-256-CFB; AES-128-CFB1、AES-192-CFB1、AES-256-CFB1; AES-128-CFB8、AES-192-CFB8、...
Hi3520/15 CIPHER API参考 加密/解密 硬件方式,比软件快很多
java实现加密解密算法工具类_Cipher
Java 公钥和私钥加密解密源码,写了注释可以直接运行,测试没有问题
java和javascript加密解密,可相互加密解密,内含javascript代码和java代码,解压即用,自定义密钥
维吉尼亚密码的加密与解密 当知道密钥key的时候可以很方便的得到加密密文;Vigenère cipher;加密算法
Column permutation cipher是基于置换的加密解密方式。利用本程序可实现Column permutation cipher的加密和解密。
cipher批处理查找EFS加密文件并一键解密命令,比通过属性解密要快,要方便很多。
C#加密 解密对接java 的加密AES/CBC/PKCS7Padding 转16进制 C#加密解密中的详细整理
对数据进行加密和解密 AES加密有多种算法模式,下面提供两套模式的可用源码: 一、CBC(Cipher Block Chaining,加密块链)模式 二、ECB(Electronic Code Book,电子密码本)模式 其中CBC模式下,有.NET的源码。而...
Delphi 加密解密 AES DES RC Blowfish等算法控件源程序。 包含:AES 加密解密,DES 加密解密,RC 加密解密 Blowfish加密解密等
Java Cipher 加密和解密工具 附带源码 Java Cipher 加密和解密工具 附带源码 Java Cipher 加密和解密工具 附带源码 Java Cipher 加密和解密工具 附带源码
Delphi 加密解密 AES DES RC Blowfish等算法控件源程序。 包含:AES 加密解密,DES 加密解密,RC 加密解密 Blowfish加密解密等