24、AES RSA加密处理记录
一、加密过程解释
前提:发送方为A,接受方为B
牢记:RSA为非对称加密,AES为对称加密。对称加密,属于传统的加密技术,加密和解密的秘钥都是相同的,AES的秘钥长度有128、192、256三种。非对称加密属于现加密技术,加密和解密的秘钥是不同的,一个是公钥,一个是私钥,常用于数字签名和加密秘钥。
1、B产生RSA密钥,并将对应的RSA公钥发给A
2、A得到RSA公钥;随机产生一个AES密钥;使用RSA公钥和RSA算法对AES密钥进行加密,并写入文件头部;用AES密钥和AES算法加密数据,写入文件尾部;将数据发给B
3、B收到数据,使用RSA密钥和RSA解密算法,解密头部,得到AES密钥;使用AES密钥和AES算法解密剩余数据。

二、代码实现
1、RSA加密
String mingwen = "哈哈 加密也就那回事嘛";
byte[] private_key;
byte[] private_key_encode=null ;
byte[] mingwen_encrypt=null;;
byte[] mingwen_encrypt_encode=null;
try {
RSAUtil rsaUtil = RSAUtil.createRSAUtilWithRandomKeys();
//加密后的私钥
private_key = rsaUtil.getPrivateKeyBytes();
private_key_encode = Base64.encode(private_key, 1);
//经过rsa和base64加密后的数据
mingwen_encrypt = rsaUtil.encrypt(mingwen.getBytes());
mingwen_encrypt_encode = Base64.encode(mingwen_encrypt, 1);
} catch (Exception e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
try {
//rsaUtil.genKeyPair();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
2、RSA解密
//对RSA私钥进行BASE64解码
byte[] private_key_1 =Base64.decode( private_key_encode,1);
//产生RSAUtil的实例
RSAUtil rsaUtil_1 = new RSAUtil(null, private_key_1, null);
//将密文进行BASE64解密
byte[] miwen_encrypt = Base64.decode(mingwen_encrypt_encode, 1);
//将密文进RSA解密
byte[] miwen= rsaUtil_1.decrypt(miwen_encrypt);
try {
Log.e(tag,"mingwen is "+new String(miwen, "utf-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
3、AES解密
//创建AES实例
AESUtil aesUtil = new AESUtil("1234567812345678".getBytes());
//Base64解码 说明:里边的参数为首先经过AES加密,然后BASE64
byte[] encData = Base64.decode("oO7khHummGsw6dFPKu83C8blEjdVUDbhf2ii4c0ET5HoOIL5kClQR7gj/rP04fSj", 0);
//AES解码
byte[] decData = aesUtil.decrypt(encData);
try {
mMarque.setText(new String(decData, "utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
mMarque.setText(e.getMessage());
}*/
24、AES RSA加密处理记录的更多相关文章
- 安全篇-AES/RSA加密机制
在服务器与终端设备进行HTTP通讯时,常常会被网络抓包.反编译(Android APK反编译工具)等技术得到HTTP通讯接口地址和参数.为了确保信息的安全,我们采用AES+RSA组合的方式进行接口参数 ...
- aes rsa加密
aes在加密时,若加密字符串的长度不是16,则会在后面加0x00补足16位,所以在解密后还应该去除0x00 小于16字节的原文会得到16字节长度的密文,小于32字节的原文会得到32字节长度的密文,大于 ...
- Js实现AES/RSA加密
1. function aesEncrypt(text, secKey) { var key = CryptoJS.enc.Utf8.parse(secKey); var iv = CryptoJS. ...
- 我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密
前言 未加密的抓包截图 加密之后的抓包截图 基本需求及概念 AES算法 AES基本原理及算法流程 AES算法流程 RSA算法 RSA算法基本原理及流程 RSA算法实现流程 AES与RSA相结合数据加密 ...
- 基于OpenSLL的RSA加密应用(非算法)
基于OpenSLL的RSA加密应用(非算法) iOS开发中的小伙伴应该是经常用der和p12进行加密解密,而且在通常加密不止一种加密算法,还可以加点儿盐吧~本文章主要阐述的是在iOS中基于openSL ...
- 基于OpenSSL的RSA加密应用(非算法)
基于OpenSSL的RSA加密应用(非算法) iOS开发中的小伙伴应该是经常用der和p12进行加密解密,而且在通常加密不止一种加密算法,还可以加点儿盐吧~本文章主要阐述的是在iOS中基于openSL ...
- 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密
你真的了解字典(Dictionary)吗? 从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...
- Java使用Cipher类实现加密,包括DES,DES3,AES和RSA加密
一.先看一个简单加密,解密实现 1.1 加密 /** * content: 加密内容 * slatKey: 加密的盐,16位字符串 * vectorKey: 加密的向量,16位字符串 */ publi ...
- JAVA RSA加密AES加密
RSA加密: import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; imp ...
随机推荐
- JFrame Frame 窗口关闭
JFrame是Frame的子类,即JFrame继承自Frame. JFrame是javax.swing.JFrame的类,Frame是java.awt.Frame的类. 类似的还有JButton.Bu ...
- ABAP扫雷游戏
. INCLUDE <icon>. CONSTANTS: " >> board cell values blank_hidden ', blank_marked TY ...
- JavaScript笔记5-事件
一.概述: 事件是可以被JavaScript侦测到的行为.网页中的每个元素都可以产生某些可以触发JavaScript函数的事件.相当于让标签在满足某种条件的时候,调用指定的方法. 二.常用事件 1:o ...
- Game Engine Architecture
- IIS 7.0的根文件(applicationHost.config)位置及说明
位置 C:\Windows\System32\inetsrv\config\applicationHost.config 说明 https://www.microsoft.com/taiwan/tec ...
- Codeforces 786E. ALT 最小割+倍增
E. ALT http://codeforces.com/problemset/problem/786/E 题意: 给出一棵 n 个节点的树与 m 个工人.每个工人有一条上下班路线(简单路径),一个工 ...
- [机器视觉] SIFT特征-尺度不变特征理解
SIFT特征-尺度不变特征理解 简介 SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述.这种描述具有尺度不变性 ...
- java,求1-100以内所有偶数的和。
package study01; public class Even { public static void main(String[] args) { int sum = 0; for (int ...
- codis 配置
#修改dashboard.toml: coordinator_name = "zookeeper" coordinator_addr = "192.168.56.101: ...
- Angular - Can't bind to 'ngModel' since it isn't a known property of 'input'.
用[(ngModel)]="xxx"双向绑定,如:控制台报错:Can't bind to 'ngModel' since it isn't a known property of ...