Android安全加密专题文章索引

  1. Android安全加密:对称加密
  2. Android安全加密:非对称加密
  3. Android安全加密:消息摘要Message Digest
  4. Android安全加密:数字签名和数字证书
  5. 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安全加密:非对称加密相关推荐

  1. Android加密算法之非对称加密RSA

    丨版权说明 :<Android加密算法之非对称加密RSA>于当前CSDN博客和乘月网属同一原创,转载请说明出处,谢谢. 上文<Android加密算法之对称加密AES>提到与对称 ...

  2. Linux系统安全概述-sudo授权-pam认证机制-对称加密-非对称加密-md5-数字证书

    内容: 17.1 Linux系统安全概述-su-sudo授权 17.2 pam认证机制概述 17.3 对称加密-非对称加密方法 17.4 md5-sha1-哈希算法使用方法 17.5 CA证书的作用 ...

  3. HTTPS(对称加密+非对称加密+证书)

    目录 1. 加密和解密 HTTPS工作过程 2. 对称加密 3. 对称加密 4. 既然都有非对称加密了,那为啥还要有对称加密 5. 中间人攻击 6. 引入证书 HTTPS 也是一个应用层协议. 是在 ...

  4. 对称加密非对称加密混合加密

    对称加密&非对称加密&混合加密 写于前 iOS中常在哪些场景应用到 写一个系列 本文概要 对称加密(Symmetric Cryptography) 非对称加密(ASymmetric C ...

  5. 对称加密 非对称加密

    目录 一.加解密算法 二.算法体系 三.对称加密 四.非对称加密 五.混合加密机制 六.DES加密原理 七.3DES加密原理 八.AES加密原理 九.RSA加密原理 十.EIGamal加密原理 十一. ...

  6. API接口加密—非对称加密解密之分段加解密

    引言: 对称加密:双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密. 优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开.计算量小.加密速度 ...

  7. 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密 | 非对称加密 | 散列函数 )

    文章目录 一.加密类型 二.加密解密三要素 三.加密应用场景 四.散列函数 一.加密类型 数据加密操作 分为 对称加密 和 非对称加密 ; 对称加密 : 加密密钥 与 解密密钥 相同 ; 非对称加密 ...

  8. JWT对称加密非对称加密

    JWT JWT原理图: JWT的数据结构 jwt头:JWT头部分是一个描述JWT元数据的JSON对象 有效载荷:七个默认字段+自定义私有字段 签名=HMACSHA256(base64UrlEncode ...

  9. 对称加密 非对称加密

    算法选择:对称加密AES,非对称加密: ECC,消息摘要: MD5,数字签名:DSA 对称加密算法(加解密密钥相同) 名称 密钥长度 运算速度 安全性 资源消耗 DES 56位 较快 低 中 3DES ...

  10. 对称加密/非对称加密

    原文链接:https://blog.csdn.net/aminy123/article/details/81871092 一.对称加密: 对称加密,即采用对称的密码编码技术,他的特点是,加密和解密使用 ...

最新文章

  1. android5多窗口,教程 开启 Nexus5 Android M 的多窗口模式。
  2. Io 异常: The Network Adapter could not establish the connection(转)
  3. cpu多核 node 单线程_node单线程支撑高并发原理(node异步I/O)
  4. 最近录制了一些视频,搭建和测试了一下视频平台
  5. arch linux 时间,System time (简体中文)
  6. ssl 命令访问其他的服务器
  7. linux桌面版如何添加新网络,ubuntu网络配置(桌面版和服务器版)
  8. 基于springboot的失物招领系统
  9. 查看linux的iso文件名,查看ISO文件信息
  10. 小米android怎么刷机教程,安卓刷机教程_小米刷机教程_手机刷机教程-IT资讯(PC6.com)...
  11. 刷脸支付将替代传统的聚合收款二维码
  12. Centos7 局域网邮件服务器实践
  13. matlab 逐日 变逐月,100多年的逐日数据在EXCEL里用VBA程序求月平均和月求和 - 信息科学 - 小木虫 - 学术 科研 互动社区...
  14. 信安冬令营实训报告(信息收集,主机渗透,内网渗透)
  15. 置信区间,置信水平/置信度
  16. 用python画中国象棋棋盘
  17. 极客日报第118期:京东被曝显卡售后不肯维修要原价退款;​IBM发布第一个2纳米芯片;Bootstrap 5.0.0发布
  18. 用 Pandas 读写网页中的 HTML 表格数据
  19. ASP.NET 2.0收集
  20. 一个Android开发者眼中的微信小程序

热门文章

  1. 互联网运营期产品评审杂思,互联网营销
  2. 上周回顾:***猖狂叫板欧美政府 赛门铁克赔偿羞羞答答
  3. SDN控制器是这样工作的
  4. 基础的互联网连接词汇—Vecloud微云
  5. niginx高性能原因
  6. 创建一个dynamics CRM workflow (三) - Creating Configuration Entity for Custom Workflow
  7. Linux环境下如何编译和执行c程序
  8. CCF - 201509-2 - 日期计算
  9. 7款外观迷人的HTML5/CSS3 3D特效按钮特效
  10. Android之路-------Activity的详解