aes加密之android代码。
package cn.example.aes;
import android.util.Base64;
import java.security.MessageDigest;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class AESCrypt {
/** 加密key*/
private final String SEED_16_CHARACTERAes = "aaaaaaaaaaaaaaaa";
/** 解密key*/
private final String SEED_16_CHARACTERDes = "bbbbbbbbbbbbbbbb";
public AESCrypt(){
}
/** 获取偏移向量*/
public AlgorithmParameterSpec getIV() {
// 偏移向量初始化(要求为16位)
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 {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.update(SEED_16_CHARACTERAes.getBytes("UTF-8"));
byte[] keyBytes = new byte[32];
System.arraycopy(digest.digest(), 0, keyBytes, 0, keyBytes.length);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
AlgorithmParameterSpec spec = getIV();
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 {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.update(SEED_16_CHARACTERDes.getBytes("UTF-8"));
byte[] keyBytes = new byte[32];
System.arraycopy(digest.digest(), 0, keyBytes, 0, keyBytes.length);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
AlgorithmParameterSpec spec = getIV();
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;
}
}
引用代码文章地址:
这篇文章讲解了php,android之间的aes加密解密的交互,经验证是没有问题的。