Android Base64代码如下:

// 加密传入的数据是byte类型的,并非使用decode方法将原始数据转二进制,String类型的数据 使用 str.getBytes()即可

String str = "Hello!";

// 在这里使用的是encode方式,返回的是byte类型加密数据,可使用new String转为String类型

String strBase64 = new String(Base64.encode(str.getBytes(), Base64.DEFAULT));

Log.i("Test", "encode >>>" + strBase64);

// 这里 encodeToString 则直接将返回String类型的加密数据

String enToStr = Base64.encodeToString(str.getBytes(), Base64.DEFAULT);

Log.i("Test", "encodeToString >>> " + enToStr);

// 对base64加密后的数据进行解密

Log.i("Test", "decode >>>" + new String(Base64.decode(strBase64.getBytes(), Base64.DEFAULT)));

Android AES代码如下:

/**

* @param

* @return AES加密算法加密

* @throws Exception

*/

public static String encrypt(String seed, String cleartext)

throws Exception {

byte[] rawKey = getRawKey(seed.getBytes());

byte[] result = encrypt(rawKey, cleartext.getBytes());

return toHex(result);

}

/**

* @param

* @return AES加密算法加密

* @throws Exception

*/

private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

Cipher cipher = Cipher.getInstance("AES");

cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

byte[] encrypted = cipher.doFinal(clear);

return encrypted;

}

private static String toHex(byte[] buf) {

final String HEX = "0123456789ABCDEF";

if (buf == null)

return "";

StringBuffer result = new StringBuffer(2 * buf.length);

for (int i = 0; i < buf.length; i++) {

result.append(HEX.charAt((buf[i] >> 4) & 0x0f)).append(

HEX.charAt(buf[i] & 0x0f));

}

return result.toString();

}

/**

* @param raw

* @param encrypted

* @return AES加密算法解密

* @throws Exception

*/

public static String decrypt(String seed, String encrypted)

throws Exception {

byte[] rawKey = getRawKey(seed.getBytes());

byte[] enc = toByte(encrypted);

byte[] result = decrypt(rawKey, enc);

return new String(result);

}

private static byte[] decrypt(byte[] raw, byte[] encrypted)

throws Exception {

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

Cipher cipher = Cipher.getInstance("AES");

cipher.init(Cipher.DECRYPT_MODE, skeySpec);

byte[] decrypted = cipher.doFinal(encrypted);

return decrypted;

}

private static byte[] toByte(String hexString) {

int len = hexString.length() / 2;

byte[] result = new byte[len];

for (int i = 0; i < len; i++)

result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2),

16).byteValue();

return result;

}

private static byte[] getRawKey(byte[] seed) throws Exception {

KeyGenerator kgen = KeyGenerator.getInstance("AES");

SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");

sr.setSeed(seed);

kgen.init(128, sr); // 192 and 256 bits may not be available

SecretKey skey = kgen.generateKey();

byte[] raw = skey.getEncoded();

return raw;

}

// 使用该方法

String masterPassword = "test";

String originalText = "0123456789";

String encryptingCode = SimpleCrypto.encrypt(masterPassword,originalText);

Log.i("加密结果为 ",encryptingCode);

String decryptingCode = SimpleCrypto.decrypt(masterPassword, encryptingCode);

Log.i("解密结果",decryptingCode);

android base64解密,android Base64 AES加密解密相关推荐

  1. python 加密解密_python实现AES加密解密

    本文实例为大家分享了python实现AES加密解密的具体代码,供大家参考,具体内容如下 (1)对于AES加密解密相关知识 (2)实现的功能就是输入0-16个字符,然后经过AES的加密解密最后可以得到原 ...

  2. c php aes加密解密,php的AES加密解密

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. $privateKey = "1234567812345678"; $ ...

  3. php aes解密中文,PHP AES加密解密算法

    //--------第四种AES加密/解密方案 CBC模式,128-bit-------- /* * 实现AES加密 * $str : 要加密的字符串 * $keys : 加密密钥 * $iv : 加 ...

  4. C#常用加密解密方法(AES加密解密)

    在日常开发过程中,总会遇到需要加密解密的需求,这里我整理了C#常用的加密解密方法分享给大家. 先看看加密的基本概念: "加密",是一种限制对网络上传输数据的访问权的技术.原始数据( ...

  5. 在线AES加密/解密工具

    在线AES加密/解密工具 在线AES加密/解密工具 使用工具测试加密结果 http://lzltool.com/AES 使用工具测试解密结果 http://lzltool.com/AES

  6. android、ios、php之间AES加密解密

    使用原因: 因为在项目中,需要在与客户端(IOS,Android)交互的时候,保存一些私有信息,不被别人看到,所以,使用了比较流行的可以反向加解密的AES. PHP 源码 <?php$aes = ...

  7. Android AES加密解密工具类

    一个用于Android AES加密解密的工具类,记录一下... import android.os.Build import android.security.keystore.KeyGenParam ...

  8. java之php、Android、JAVA、C# 3DES加密解密

    异常如下 1.javax.crypto.BadPaddingException: Given final block not properly padded 1)要确认下是否加密和解密都是使用相同的填 ...

  9. AES加密解密(ECB模式)

    高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES, ...

  10. AES加密解密(CBC模式)

    高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES, ...

最新文章

  1. ICML 2020 | 基于连续动态系统学习更加灵活的位置编码
  2. ThreadLocal - Java多线程编程
  3. 微软 PowerBI 被评为商业智能领导者-13年的企业产品奋斗史解读
  4. IntelliJ IDEA-我的习惯性设置
  5. 中红外传感器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  6. 在 Windows 上安装Rabbit MQ 指南
  7. SylixOS线程创建的流程分析
  8. 【java奇思妙想】一个能够改变字体颜色、字号大小、字体样式的html网页
  9. android如何关闭响应程序,android – 如何修复应用程序没有响应?
  10. oracle怎么定义参数函数返回值,Oracle自定义函数记录
  11. 基于Python的周立功CAN上位机(详细教程)
  12. PSSP之特征提取(PSSP protein secondary structure prediction)
  13. dell服务器 pe系统安装教程,戴尔n4050 PE安装win10系统图文教程
  14. JS 实战: Drag 点击拖曳效果
  15. Android开发(四):在标题栏右上角实现菜单(三个点)
  16. 【翻译】DataHub:流行的元数据架构讲解
  17. uni-app转小程序ios video不生效+视频播放不了、黑屏问题
  18. python语言基本语句-Python中的基本语句
  19. 当我尝试写一个自动写小说的AI,长路漫漫的踩坑之路 ToT
  20. 【Python标准库】LZ77编码和lzma模块

热门文章

  1. UDP千兆以太网FPGA_verilog实现(三、代码前期准备-时序要求)
  2. 陈炳藻用计算机研究,计算机闯入“大观园”
  3. 子组件获取父组件的值,将这个值作为状态值保存
  4. vue学习笔记(WebStorm安装)
  5. Centos7 Docker Jenkins ASP.NET Core 2.0 自动化发布和部署
  6. Oracle VM VirtualBox上安装windows server2008R2做SharePointServer2010开发(中)
  7. 就是好骑!骑ofo小黄蜂和舒畅早晨say hi,跟闹心堵车say bye
  8. 9月14日学习内容整理:初识别面向对象
  9. 老师,我来帮你推问卷
  10. 《C语言及程序设计》程序阅读——文件操作