Java加密:这是加密的正确验证码

时间:2016-09-14 07:54:26

标签: java security encryption cryptography

我正在尝试使用AES加密和解密来加密某些数据。我使用以下示例编写了加密。

https://www.owasp.org/index.php/Using_the_Java_Cryptographic_Extensions#AES_Encryption_and_Decryption

这是我的加密和解密代码。

String strDataToEncrypt = new String();
String strCipherText = new String();
String strDecryptedText = new String();

try {
    KeyGenerator keyGen = KeyGenerator.getInstance("AES");
    keyGen.init(128);
    SecretKey secretKey = keyGen.generateKey();

    final int AES_KEYLENGTH = 128;  
    byte[] iv = new byte[AES_KEYLENGTH / 8];    
    SecureRandom prng = new SecureRandom();
    prng.nextBytes(iv);

    Cipher aesCipherForEncryption = Cipher.getInstance("AES/CBC/PKCS7PADDING");

    aesCipherForEncryption.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(iv));

    strDataToEncrypt = "Hello World of Encryption using AES ";
    byte[] byteDataToEncrypt = strDataToEncrypt.getBytes();
    byte[] byteCipherText = aesCipherForEncryption.doFinal(byteDataToEncrypt);

    strCipherText = new BASE64Encoder().encode(byteCipherText);
    System.out.println("Cipher Text generated using AES is " + strCipherText);


    Cipher aesCipherForDecryption = Cipher.getInstance("AES/CBC/PKCS7PADDING"); 

    aesCipherForDecryption.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(iv));
    byte[] byteDecryptedText = aesCipherForDecryption.doFinal(byteCipherText);
    strDecryptedText = new String(byteDecryptedText);

    System.out.println(" Decrypted Text message is " + strDecryptedText);

} catch (NoSuchAlgorithmException noSuchAlgo) {
    System.out.println(" No Such Algorithm exists " + noSuchAlgo);
} catch (NoSuchPaddingException noSuchPad) {
    System.out.println(" No Such Padding exists " + noSuchPad);
} catch (InvalidKeyException invalidKey) {
    System.out.println(" Invalid Key " + invalidKey);
} catch (BadPaddingException badPadding) {
    System.out.println(" Bad Padding " + badPadding);
} catch (IllegalBlockSizeException illegalBlockSize) {
    System.out.println(" Illegal Block Size " + illegalBlockSize);
} catch (InvalidAlgorithmParameterException invalidParam) {
    System.out.println(" Invalid Parameter " + invalidParam);
}

这是否有正确的安全流程?因为这不适用于 PKCS7 。但这与 PKCS5 有关。

0 个答案:

没有答案