Java AES 加密算法实现与模式详解
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.shiro.codec.Hex;
public class AES {
static Cipher cipher;
static final String KEY_ALGORITHM = "AES";
static final String CIPHER_ALGORITHM_ECB = "AES/ECB/PKCS5Padding";
static final String CIPHER_ALGORITHM_CBC = "AES/CBC/PKCS5Padding";
static final String CIPHER_ALGORITHM_CBC_NoPadding = ;
SecretKey secretKey;
Exception {
}
Exception {
cipher = Cipher.getInstance(KEY_ALGORITHM);
secretKey = KeyGenerator.getInstance(KEY_ALGORITHM).generateKey();
System.out.println( + secretKey.getEncoded());
[] keyBytes = secretKey.getEncoded();
secretKey = (keyBytes, KEY_ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
[] encrypt = cipher.doFinal(str.getBytes());
System.out.println( + Arrays.toString(encrypt));
secretKey = (keyBytes, KEY_ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
[] decrypt = cipher.doFinal(encrypt);
System.out.println( + (decrypt));
}
Exception {
Cipher.getInstance();
KeyGenerator.getInstance().generateKey();
[] keyBytes = serverSecretKey.getEncoded();
Hex.encodeToString(keyBytes);
System.out.println(+keyStr);
(Hex.decode(keyStr), );
Cipher.getInstance();
clientCiper.init(Cipher.ENCRYPT_MODE, clientSecretKey);
Hex.encodeToString(clientCiper.doFinal(content.getBytes()));
System.out.println(+encryptStr);
serverCiper.init(Cipher.DECRYPT_MODE, serverSecretKey);
[] decodeBytes = serverCiper.doFinal(Hex.decode(encryptStr));
System.out.println(+ (decodeBytes));
}
Exception {
cipher = Cipher.getInstance(CIPHER_ALGORITHM_ECB);
secretKey = KeyGenerator.getInstance(KEY_ALGORITHM).generateKey();
System.out.println( + secretKey.getEncoded().length);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
[] encrypt = cipher.doFinal(str.getBytes());
System.out.println( + Arrays.toString(encrypt));
cipher.init(Cipher.DECRYPT_MODE, secretKey);
[] decrypt = cipher.doFinal(encrypt);
System.out.println( + (decrypt));
}
[] getIV() {
;
iv.getBytes();
}
Exception {
cipher = Cipher.getInstance(CIPHER_ALGORITHM_CBC);
secretKey = KeyGenerator.getInstance(KEY_ALGORITHM).generateKey();
System.out.println( + secretKey.getEncoded().length);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, (getIV()));
[] encrypt = cipher.doFinal(str.getBytes());
System.out.println( + Arrays.toString(encrypt));
cipher.init(Cipher.DECRYPT_MODE, secretKey, (getIV()));
[] decrypt = cipher.doFinal(encrypt);
System.out.println( + (decrypt));
}
Exception {
cipher = Cipher.getInstance(CIPHER_ALGORITHM_CBC_NoPadding);
secretKey = KeyGenerator.getInstance(KEY_ALGORITHM).generateKey();
System.out.println( + secretKey.getEncoded().length);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, (getIV()));
[] encrypt = cipher.doFinal(str.getBytes(), , str.length());
System.out.println( + Arrays.toString(encrypt));
cipher.init(Cipher.DECRYPT_MODE, secretKey, (getIV()));
[] decrypt = cipher.doFinal(encrypt);
System.out.println( + (decrypt));
}
}