一、加密过程解释

前提:发送方为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加密处理记录的更多相关文章

  1. 安全篇-AES/RSA加密机制

    在服务器与终端设备进行HTTP通讯时,常常会被网络抓包.反编译(Android APK反编译工具)等技术得到HTTP通讯接口地址和参数.为了确保信息的安全,我们采用AES+RSA组合的方式进行接口参数 ...

  2. aes rsa加密

    aes在加密时,若加密字符串的长度不是16,则会在后面加0x00补足16位,所以在解密后还应该去除0x00 小于16字节的原文会得到16字节长度的密文,小于32字节的原文会得到32字节长度的密文,大于 ...

  3. Js实现AES/RSA加密

    1. function aesEncrypt(text, secKey) { var key = CryptoJS.enc.Utf8.parse(secKey); var iv = CryptoJS. ...

  4. 我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密

    前言 未加密的抓包截图 加密之后的抓包截图 基本需求及概念 AES算法 AES基本原理及算法流程 AES算法流程 RSA算法 RSA算法基本原理及流程 RSA算法实现流程 AES与RSA相结合数据加密 ...

  5. 基于OpenSLL的RSA加密应用(非算法)

    基于OpenSLL的RSA加密应用(非算法) iOS开发中的小伙伴应该是经常用der和p12进行加密解密,而且在通常加密不止一种加密算法,还可以加点儿盐吧~本文章主要阐述的是在iOS中基于openSL ...

  6. 基于OpenSSL的RSA加密应用(非算法)

    基于OpenSSL的RSA加密应用(非算法) iOS开发中的小伙伴应该是经常用der和p12进行加密解密,而且在通常加密不止一种加密算法,还可以加点儿盐吧~本文章主要阐述的是在iOS中基于openSL ...

  7. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  8. Java使用Cipher类实现加密,包括DES,DES3,AES和RSA加密

    一.先看一个简单加密,解密实现 1.1 加密 /** * content: 加密内容 * slatKey: 加密的盐,16位字符串 * vectorKey: 加密的向量,16位字符串 */ publi ...

  9. JAVA RSA加密AES加密

    RSA加密: import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; imp ...

随机推荐

  1. 用Meta标签代码让360双核浏览器默认极速模式打开网站不是兼容模式

    公司所作的页面在360下打开都会遇到在360下自动跳到360兼容模式引发许多兼容问题,摸索了好久终于在网上找到了怎么解决的方法,详情如下: 其实360给网站开发者设计了一种选择的方法,只要加入一段Me ...

  2. HTML5标签选择指引

  3. jsp-简单的猜数小游戏

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  4. Redis数据库1

    一.启动服务 #进入redis安装文件夹 cd /usr/local/redis/ #开启服务端(后端开启) ./bin/redis-server ./redis.conf #开启客户端 ./bin/ ...

  5. Python2和Python3语法区别

    1.使用for循环进行换行 python 2.x, print 不换行>>> print x, python 3.x print 不换行>>> print(x, e ...

  6. POJ 3254 Corn Fields (状压DP,轮廓线DP)

    题意: 有一个n*m的矩阵(0<n,m<=12),有部分的格子可种草,有部分不可种,问有多少种不同的种草方案(完全不种也可以算1种,对答案取模后输出)? 思路: 明显的状压DP啦,只是怎样 ...

  7. Spoj REPEATS 后缀自动机+set

    REPEATS - Repeats 链接:http://www.spoj.com/problems/REPEATS 题意:求S串中某个子串连续循环次数最多的次数. 想法: 从暴力开始,枚举所有串,求出 ...

  8. HDU 4738 Caocao's Bridges taijan (求割边,神坑)

    神坑题.这题的坑点有1.判断连通,2.有重边,3.至少要有一个人背*** 因为有重边,tarjan的时候不能用子结点和父节点来判断是不是树边的二次访问,所以我的采用用前向星存边编号的奇偶性关系,用^1 ...

  9. [C++讨论课] 课堂记录(一)

    今天第一次参加c++讨论课,记录下了各组同学的展示的问题或者解决方法,也有一些知识点上的内容,供以后复习参考. 1.常量指针和指针常量问题 常量指针:指向常量的指针,例如const int *p =  ...

  10. 2018.4.22 深入理解Java的接口和抽象类

    前言 对于面向对象编程来说,抽象是他的一大特征之一.在Java中,可以通过两种形式来体现oop 的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初雪的时候会以为他们可以随意互 ...