这里有新鲜出炉的Java设计模式,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要介绍了java实现的AES加密算法,结合完整实例形式分析了AES加密类的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了java实现的AES加密算法。分享给大家供大家参考,具体如下:
- import javax.crypto.Cipher;
- import javax.crypto.spec.IvParameterSpec;
- import javax.crypto.spec.SecretKeySpec;
- import android.util.Base64;
- /**
- * @author vipin.cb , vipin.cb@experionglobal.com <br>
- * Sep 27, 2013, 5:18:34 PM <br>
- * Package:- <b>com.veebow.util</b> <br>
- * Project:- <b>Veebow</b>
- * <p>
- */
- public class AESCrypt {
- private final Cipher cipher;
- private final SecretKeySpec key;
- private AlgorithmParameterSpec spec;
- public static final String SEED_16_CHARACTER = "U1MjU1M0FDOUZ.Qz";
- public AESCrypt() throws Exception {
- // hash password with SHA-256 and crop the output to 128-bit for key
- MessageDigest digest = MessageDigest.getInstance("SHA-256");
- digest.update(SEED_16_CHARACTER.getBytes("UTF-8"));
- byte[] keyBytes = new byte[32];
- System.arraycopy(digest.digest(), 0, keyBytes, 0, keyBytes.length);
- cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
- key = new SecretKeySpec(keyBytes, "AES");
- spec = getIV();
- }
- public AlgorithmParameterSpec getIV() {
- byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
- IvParameterSpec ivParameterSpec;
- ivParameterSpec = new IvParameterSpec(iv);
- return ivParameterSpec;
- }
- public String encrypt(String plainText) throws Exception {
- cipher.init(Cipher.ENCRYPT_MODE, key, spec);
- byte[] encrypted = cipher.doFinal(plainText.getBytes("UTF-8"));
- String encryptedText = new String(Base64.encode(encrypted,
- Base64.DEFAULT), "UTF-8");
- return encryptedText;
- }
- public String decrypt(String cryptedText) throws Exception {
- cipher.init(Cipher.DECRYPT_MODE, key, spec);
- byte[] bytes = Base64.decode(cryptedText, Base64.DEFAULT);
- byte[] decrypted = cipher.doFinal(bytes);
- String decryptedText = new String(decrypted, "UTF-8");
- return decryptedText;
- }
- }
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
希望本文所述对大家java程序设计有所帮助。
来源: http://www.phperz.com/article/17/1118/360374.html