android base64解密,android Base64 AES加密解密
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加密解密相关推荐
- python 加密解密_python实现AES加密解密
本文实例为大家分享了python实现AES加密解密的具体代码,供大家参考,具体内容如下 (1)对于AES加密解密相关知识 (2)实现的功能就是输入0-16个字符,然后经过AES的加密解密最后可以得到原 ...
- c php aes加密解密,php的AES加密解密
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. $privateKey = "1234567812345678"; $ ...
- php aes解密中文,PHP AES加密解密算法
//--------第四种AES加密/解密方案 CBC模式,128-bit-------- /* * 实现AES加密 * $str : 要加密的字符串 * $keys : 加密密钥 * $iv : 加 ...
- C#常用加密解密方法(AES加密解密)
在日常开发过程中,总会遇到需要加密解密的需求,这里我整理了C#常用的加密解密方法分享给大家. 先看看加密的基本概念: "加密",是一种限制对网络上传输数据的访问权的技术.原始数据( ...
- 在线AES加密/解密工具
在线AES加密/解密工具 在线AES加密/解密工具 使用工具测试加密结果 http://lzltool.com/AES 使用工具测试解密结果 http://lzltool.com/AES
- android、ios、php之间AES加密解密
使用原因: 因为在项目中,需要在与客户端(IOS,Android)交互的时候,保存一些私有信息,不被别人看到,所以,使用了比较流行的可以反向加解密的AES. PHP 源码 <?php$aes = ...
- Android AES加密解密工具类
一个用于Android AES加密解密的工具类,记录一下... import android.os.Build import android.security.keystore.KeyGenParam ...
- java之php、Android、JAVA、C# 3DES加密解密
异常如下 1.javax.crypto.BadPaddingException: Given final block not properly padded 1)要确认下是否加密和解密都是使用相同的填 ...
- AES加密解密(ECB模式)
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES, ...
- AES加密解密(CBC模式)
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES, ...
最新文章
- ICML 2020 | 基于连续动态系统学习更加灵活的位置编码
- ThreadLocal - Java多线程编程
- 微软 PowerBI 被评为商业智能领导者-13年的企业产品奋斗史解读
- IntelliJ IDEA-我的习惯性设置
- 中红外传感器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 在 Windows 上安装Rabbit MQ 指南
- SylixOS线程创建的流程分析
- 【java奇思妙想】一个能够改变字体颜色、字号大小、字体样式的html网页
- android如何关闭响应程序,android – 如何修复应用程序没有响应?
- oracle怎么定义参数函数返回值,Oracle自定义函数记录
- 基于Python的周立功CAN上位机(详细教程)
- PSSP之特征提取(PSSP protein secondary structure prediction)
- dell服务器 pe系统安装教程,戴尔n4050 PE安装win10系统图文教程
- JS 实战: Drag 点击拖曳效果
- Android开发(四):在标题栏右上角实现菜单(三个点)
- 【翻译】DataHub:流行的元数据架构讲解
- uni-app转小程序ios video不生效+视频播放不了、黑屏问题
- python语言基本语句-Python中的基本语句
- 当我尝试写一个自动写小说的AI,长路漫漫的踩坑之路 ToT
- 【Python标准库】LZ77编码和lzma模块
热门文章
- UDP千兆以太网FPGA_verilog实现(三、代码前期准备-时序要求)
- 陈炳藻用计算机研究,计算机闯入“大观园”
- 子组件获取父组件的值,将这个值作为状态值保存
- vue学习笔记(WebStorm安装)
- Centos7 Docker Jenkins ASP.NET Core 2.0 自动化发布和部署
- Oracle VM VirtualBox上安装windows server2008R2做SharePointServer2010开发(中)
- 就是好骑!骑ofo小黄蜂和舒畅早晨say hi,跟闹心堵车say bye
- 9月14日学习内容整理:初识别面向对象
- 老师,我来帮你推问卷
- 《C语言及程序设计》程序阅读——文件操作