Android安全加密:非对称加密
Android安全加密专题文章索引
- Android安全加密:对称加密
- Android安全加密:非对称加密
- Android安全加密:消息摘要Message Digest
- Android安全加密:数字签名和数字证书
- Android安全加密:Https编程
1. 介绍
与对称加密算法不同,非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
简单理解为:加密和解密是不同的钥匙
2. 常见算法
RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等,其中支付宝使用的就是RSA算法
3. RSA 算法原理
质因数、欧拉函数、模反元素
原理很复杂,只需要知道内部是基于分解质因数和取模操作即可
4. 使用步骤
//1,获取cipher 对象
Cipher cipher = Cipher.getInstance("RSA");
//2,通过秘钥对生成器KeyPairGenerator 生成公钥和私钥
KeyPair keyPair = KeyPairGenerator.getInstance("RSA").generateKeyPair();
//使用公钥进行加密,私钥进行解密(也可以反过来使用)
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
//3,使用公钥初始化密码器
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
//4,执行加密操作
byte[] result = cipher.doFinal(content.getBytes());
//使用私钥初始化密码器
cipher.init(Cipher.DECRYPT_MODE, privateKey);
//执行解密操作
byte[] deResult = cipher.doFinal(result);
5. 注意点
//一次性加密数据的长度不能大于117 字节
private static final int ENCRYPT_BLOCK_MAX = 117;
//一次性解密的数据长度不能大于128 字节
private static final int DECRYPT_BLOCK_MAX = 128;
6. 分批操作
/**
* 分批操作
*
* @param content 需要处理的数据
* @param cipher 密码器(根据cipher 的不同,操作可能是加密或解密)
* @param blockSize 每次操作的块大小,单位为字节
* @return 返回处理完成后的结果
* @throws Exception
*/public static byte[] doFinalWithBatch(byte[] content, Cipher cipher, int blockSize) throwseption {int offset = 0;//操作的起始偏移位置int len = content.length;//数据总长度byte[] tmp;//临时保存操作结果ByteArrayOutputStream baos = new ByteArrayOutputStream();//如果剩下数据while (len - offset > 0) {if (len - offset >= blockSize) {//剩下数据还大于等于一个blockSizetmp = cipher.doFinal(content, offset, blockSize);}else {//剩下数据不足一个blockSizetmp = cipher.doFinal(content, offset, len - offset);}//将临时结果保存到内存缓冲区里baos.write(tmp);offset = offset + blockSize;}baos.close();return baos.toByteArray();}
7. 非对称加密用途
身份认证
一条加密信息若能用A 的公钥能解开,则该信息一定是用A 的私钥加密的,该能确定该用户是A。
陌生人通信
A 和B 两个人互不认识,A 把自己的公钥发给B,B 也把自己的公钥发给A,则双方可以通过对方的公钥加密信息通信。C 虽然也能得到A、B 的公钥,但是他解不开密文。
秘钥交换
A 先得到B 的公钥,然后A 生成一个随机秘钥,例如13245768,之后A 用B 的公钥加密该秘钥,得到加密后的秘钥,例如dxs#fd@dk,之后将该密文发给B,B 用自己的私钥解密得到123456,之后双方使用13245768 作为对称加密的秘钥通信。C 就算截获加密后的秘钥dxs#fd@dk,自己也解不开,这样A、B 二人能通过对称加密进行通信。
8. 总结
非对称加密一般不会单独拿来使用,他并不是为了取代对称加密而出现的,非对称加密速度比对称加密慢很多,极端情况下会慢1000 倍,所以一般不会用来加密大量数据,通常我们经常会将对称加密和非对称加密两种技术联合起来使用,例如用非对称加密来给称加密里的秘钥进行加密(即秘钥交换)。
Android安全加密:非对称加密相关推荐
- Android加密算法之非对称加密RSA
丨版权说明 :<Android加密算法之非对称加密RSA>于当前CSDN博客和乘月网属同一原创,转载请说明出处,谢谢. 上文<Android加密算法之对称加密AES>提到与对称 ...
- Linux系统安全概述-sudo授权-pam认证机制-对称加密-非对称加密-md5-数字证书
内容: 17.1 Linux系统安全概述-su-sudo授权 17.2 pam认证机制概述 17.3 对称加密-非对称加密方法 17.4 md5-sha1-哈希算法使用方法 17.5 CA证书的作用 ...
- HTTPS(对称加密+非对称加密+证书)
目录 1. 加密和解密 HTTPS工作过程 2. 对称加密 3. 对称加密 4. 既然都有非对称加密了,那为啥还要有对称加密 5. 中间人攻击 6. 引入证书 HTTPS 也是一个应用层协议. 是在 ...
- 对称加密非对称加密混合加密
对称加密&非对称加密&混合加密 写于前 iOS中常在哪些场景应用到 写一个系列 本文概要 对称加密(Symmetric Cryptography) 非对称加密(ASymmetric C ...
- 对称加密 非对称加密
目录 一.加解密算法 二.算法体系 三.对称加密 四.非对称加密 五.混合加密机制 六.DES加密原理 七.3DES加密原理 八.AES加密原理 九.RSA加密原理 十.EIGamal加密原理 十一. ...
- API接口加密—非对称加密解密之分段加解密
引言: 对称加密:双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密. 优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开.计算量小.加密速度 ...
- 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密 | 非对称加密 | 散列函数 )
文章目录 一.加密类型 二.加密解密三要素 三.加密应用场景 四.散列函数 一.加密类型 数据加密操作 分为 对称加密 和 非对称加密 ; 对称加密 : 加密密钥 与 解密密钥 相同 ; 非对称加密 ...
- JWT对称加密非对称加密
JWT JWT原理图: JWT的数据结构 jwt头:JWT头部分是一个描述JWT元数据的JSON对象 有效载荷:七个默认字段+自定义私有字段 签名=HMACSHA256(base64UrlEncode ...
- 对称加密 非对称加密
算法选择:对称加密AES,非对称加密: ECC,消息摘要: MD5,数字签名:DSA 对称加密算法(加解密密钥相同) 名称 密钥长度 运算速度 安全性 资源消耗 DES 56位 较快 低 中 3DES ...
- 对称加密/非对称加密
原文链接:https://blog.csdn.net/aminy123/article/details/81871092 一.对称加密: 对称加密,即采用对称的密码编码技术,他的特点是,加密和解密使用 ...
最新文章
- android5多窗口,教程 开启 Nexus5 Android M 的多窗口模式。
- Io 异常: The Network Adapter could not establish the connection(转)
- cpu多核 node 单线程_node单线程支撑高并发原理(node异步I/O)
- 最近录制了一些视频,搭建和测试了一下视频平台
- arch linux 时间,System time (简体中文)
- ssl 命令访问其他的服务器
- linux桌面版如何添加新网络,ubuntu网络配置(桌面版和服务器版)
- 基于springboot的失物招领系统
- 查看linux的iso文件名,查看ISO文件信息
- 小米android怎么刷机教程,安卓刷机教程_小米刷机教程_手机刷机教程-IT资讯(PC6.com)...
- 刷脸支付将替代传统的聚合收款二维码
- Centos7 局域网邮件服务器实践
- matlab 逐日 变逐月,100多年的逐日数据在EXCEL里用VBA程序求月平均和月求和 - 信息科学 - 小木虫 - 学术 科研 互动社区...
- 信安冬令营实训报告(信息收集,主机渗透,内网渗透)
- 置信区间,置信水平/置信度
- 用python画中国象棋棋盘
- 极客日报第118期:京东被曝显卡售后不肯维修要原价退款;​IBM发布第一个2纳米芯片;Bootstrap 5.0.0发布
- 用 Pandas 读写网页中的 HTML 表格数据
- ASP.NET 2.0收集
- 一个Android开发者眼中的微信小程序