博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
24、AES RSA加密处理记录
阅读量:6152 次
发布时间:2019-06-21

本文共 2967 字,大约阅读时间需要 9 分钟。

一、加密过程解释

 

前提:发送方为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加密

1 String mingwen = "哈哈 加密也就那回事嘛"; 2  3          4  5         byte[] private_key; 6  7         byte[] private_key_encode=null ; 8  9         byte[] mingwen_encrypt=null;;10 11         byte[] mingwen_encrypt_encode=null;12 13          14 15         try {16 17             RSAUtil rsaUtil = RSAUtil.createRSAUtilWithRandomKeys();18 19 20 21             22 23             //加密后的私钥24 25             private_key = rsaUtil.getPrivateKeyBytes();26 27             private_key_encode = Base64.encode(private_key, 1);28 29             30 31             //经过rsa和base64加密后的数据32 33             mingwen_encrypt = rsaUtil.encrypt(mingwen.getBytes());34 35             mingwen_encrypt_encode = Base64.encode(mingwen_encrypt, 1);36 37             38 39         } catch (Exception e2) {40 41             // TODO Auto-generated catch block42 43             e2.printStackTrace();44 45         }46 47          48 49          try {50 51             //rsaUtil.genKeyPair();52 53         } catch (Exception e1) {54 55             // TODO Auto-generated catch block56 57             e1.printStackTrace();58 59         }
View Code

 

2、RSA解密

1    //对RSA私钥进行BASE64解码 2  3             byte[] private_key_1 =Base64.decode( private_key_encode,1); 4                          5                         //产生RSAUtil的实例 6  7                         RSAUtil rsaUtil_1 = new RSAUtil(null, private_key_1, null); 8  9 10                         //将密文进行BASE64解密11 12                         byte[]  miwen_encrypt = Base64.decode(mingwen_encrypt_encode, 1);13 14 15                         //将密文进RSA解密16 17             byte[]  miwen= rsaUtil_1.decrypt(miwen_encrypt);18 19             20 21             try {22 23                 Log.e(tag,"mingwen is "+new String(miwen, "utf-8"));24 25                 26 27             } catch (UnsupportedEncodingException e) {28 29                 // TODO Auto-generated catch block30 31                 e.printStackTrace();32 33             }
View Code

 

3、AES解密

1 //创建AES实例 2  3         AESUtil aesUtil = new AESUtil("1234567812345678".getBytes()); 4  5        6  7         //Base64解码 说明:里边的参数为首先经过AES加密,然后BASE64 8  9         byte[] encData = Base64.decode("oO7khHummGsw6dFPKu83C8blEjdVUDbhf2ii4c0ET5HoOIL5kClQR7gj/rP04fSj", 0);10 11         12 13         //AES解码14 15         byte[] decData = aesUtil.decrypt(encData);16 17         18 19         try {20 21             mMarque.setText(new String(decData, "utf-8"));22 23         } catch (UnsupportedEncodingException e) {24 25             e.printStackTrace();26 27             mMarque.setText(e.getMessage());28 29         }*/
View Code

 

转载于:https://www.cnblogs.com/kunyashaw/p/4337283.html

你可能感兴趣的文章
uva 11549 Calculator Conundrum
查看>>
java 对象 类 知识点 概览
查看>>
防线问题
查看>>
Magic Number(打表)
查看>>
jQuery
查看>>
Google Developers中国网站
查看>>
migrate
查看>>
【动态规划】bzoj1638 [Usaco2007 Mar]Cow Traffic 奶牛交通
查看>>
h2database轻量级数据库
查看>>
servlet 的基础学习
查看>>
Educational Codeforces Round 34 (Rated for Div. 2)
查看>>
Python Day38
查看>>
ie6下双边距的问题
查看>>
eChars移动端自适应学习笔记
查看>>
JAVA的io流
查看>>
在linux下python爬虫进程发生异常时自动重启直至正常结束的方法
查看>>
fastjson 过滤不需要序列化的属性
查看>>
错误:每个配置文件中只允许存在一个 元素,并且,如果存在该元素,它还必须是根 元素的第一个子元素...
查看>>
表达式求值
查看>>
Courses
查看>>