【Android】AES加密算法的Android实现

【Android】AES加密算法的Android实现,第1张

概述1importandroid.text.TextUtils;2importandroid.util.Base64;3importandroid.util.Log;45importjavax.crypto.Cipher;6importjavax.crypto.spec.IvParameterSpec;7importjavax.crypto.spec.SecretKeySpec;89publicclassAESCBCUtils{10

1 import androID.text.TextUtils; 2 import androID.util.Base64; 3 import androID.util.Log; 4 5 import javax.crypto.Cipher; 6 import javax.crypto.spec.IvParameterSpec; 7 import javax.crypto.spec.SecretKeySpec; 8 9 public class AESCBCUtils {10 private static final String TAG = "AESCBCUtils";11 12 // CBC(Cipher Block Chaining, 加密快链)模式,PKCS5padding补码方式13 // AES是加密方式 CBC是工作模式 PKCS5padding是填充模式14 /**15 * 加解密算法/工作模式/填充方式16 */17 private static final String CBC_PKCS5_padding = "AES/CBC/PKCS5padding";18 // AES 加密19 private static final String AES = "AES";20 21 // 密钥偏移量22 //private static final String mstrIvParameter = "1234567890123456";23 /* key必须为16位,可更改为自己的key */24 //String mstrTestKey = "1234567890123456";25 26 // 加密27 /**28 * AES 加密29 *30 * @param strKey 加密密钥31 * @param strClearText 待加密内容32 * @param mstrIvParameter 密钥偏移量33 * @return 返回Base64转码后的加密数据34 */35 public static String encrypt_AES(String strKey, String strClearText, String mstrIvParameter){36 37 try {38 byte[] raw = strKey.getBytes();39 // 创建AES密钥40 SecretKeySpec skeySpec = new SecretKeySpec(raw, AES);41 // 创建密码器42 Cipher cipher = Cipher.getInstance(CBC_PKCS5_padding);43 // 创建偏移量44 IvParameterSpec iv = new IvParameterSpec(mstrIvParameter.getBytes());45 // 初始化加密器46 cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);47 // 执行加密 *** 作48 byte[] cipherText = cipher.doFinal(strClearText.getBytes());49 //Log.d(TAG, "encrypt result(not BASE64): " + cipherText.toString());50 String strBase64Content = Base64.encodetoString(cipherText, Base64.DEFAulT); // encode it by BASE64 again51 //Log.d(TAG, "encrypt result(BASE64): " + strBase64Content);52 strBase64Content = strBase64Content.replaceAll(System.getProperty("line.separator"), "");53 54 return strBase64Content;55 } catch (Exception e) {56 e.printstacktrace();57 }58 59 return null;60 }61 62 // 解密63 /**64 * AES 解密65 *66 * @param strKey 解密密钥67 * @param strCipherText 待解密内容68 * @param mstrIvParameter 偏移量69 * @return 返回Base64转码后的加密数据70 */71 public static String decrypt(String strKey, String strCipherText, String mstrIvParameter) throws Exception {72 73 try {74 byte[] raw = strKey.getBytes("ASCII");75 // 创建AES秘钥76 SecretKeySpec skeySpec = new SecretKeySpec(raw, AES);77 // 创建密码器78 Cipher cipher = Cipher.getInstance(CBC_PKCS5_padding);79 // 创建偏移量80 IvParameterSpec iv = new IvParameterSpec(mstrIvParameter.getBytes());81 // 初始化解密器82 cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);83 // 执行解密 *** 作84 byte[] cipherText = Base64.decode(strCipherText, Base64.DEFAulT); // decode by BASE64 first85 //Log.d(TAG, "BASE64 decode result(): " + cipherText.toString());86 byte[] clearText = cipher.doFinal(cipherText);87 String strClearText = new String(clearText);88 //Log.d(TAG, "decrypt result: " + strClearText);89 90 return strClearText;91 } catch (Exception e) {92 e.printstacktrace();93 }94 95 return null;96 }97 }

 

总结

以上是内存溢出为你收集整理的【Android】AES加密算法的Android实现全部内容,希望文章能够帮你解决【Android】AES加密算法的Android实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1018393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存