标签:article standard bsp final esc sha sci nat public
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.KeyGenerator; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.ShortBufferException; /** * */ public class AESEncrypt { public static void main(String[] args) throws NoSuchAlgorithmException, IOException, NoSuchPaddingException, InvalidKeyException, ShortBufferException, IllegalBlockSizeException, BadPaddingException { // Generate key and store into file SecureRandom random = new SecureRandom(); // see below KeyGenerator keyGen = KeyGenerator.getInstance("AES"); keyGen.init(random); SecretKey secretKey = keyGen.generateKey(); FileOutputStream secretKeyOut = new FileOutputStream(Util.PATH_SECRETKEY); secretKeyOut.write(secretKey.getEncoded()); secretKeyOut.close(); // Cipher Cipher aesCipher = Cipher.getInstance("AES"); aesCipher.init(Cipher.ENCRYPT_MODE, secretKey); // Encrypt BufferedInputStream dataIn = new BufferedInputStream(new FileInputStream(Util.PATH_DATA)); BufferedOutputStream encryptedDataOut = new BufferedOutputStream(new FileOutputStream(Util.PATH_DATA_ENCRYPTED)); byte[] inBytes = new byte[aesCipher.getBlockSize()]; byte[] outByte; int len; while ((len = dataIn.read(inBytes)) >= 0) { outByte = aesCipher.update(inBytes, 0, len); encryptedDataOut.write(outByte); } outByte = aesCipher.doFinal(); encryptedDataOut.write(outByte); dataIn.close(); encryptedDataOut.close(); } }
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; /** * Class documentation to be filled TODO */ public class AESDecrypt { public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { // Get key FileInputStream secretKeyIn = new FileInputStream(Util.PATH_SECRETKEY); byte[] secretKeyBytes = new byte[secretKeyIn.available()]; secretKeyIn.read(secretKeyBytes); secretKeyIn.close(); SecretKey secretKey = new SecretKeySpec(secretKeyBytes, "AES"); // Cipher Cipher aesCipher = Cipher.getInstance("AES"); aesCipher.init(Cipher.DECRYPT_MODE, secretKey); // Decrypt BufferedInputStream encryptedDataIn = new BufferedInputStream(new FileInputStream(Util.PATH_DATA_ENCRYPTED)); BufferedOutputStream decryptedDataOut = new BufferedOutputStream(new FileOutputStream(Util.PATH_DATA_DECRYPTED)); byte[] inBytes = new byte[aesCipher.getBlockSize()]; byte[] outBytes; int len; while ((len = encryptedDataIn.read(inBytes)) >= 0) { outBytes = aesCipher.update(inBytes, 0, len); decryptedDataOut.write(outBytes); } outBytes = aesCipher.doFinal(); decryptedDataOut.write(outBytes); encryptedDataIn.close(); decryptedDataOut.close(); } }
[JavaSecurity] - AES Encryption
标签:article standard bsp final esc sha sci nat public
原文地址:http://www.cnblogs.com/jhcelue/p/6785919.html