Android最常用八种加密算法

2023-11-15

原文链接:http://blog.csdn.net/smartbetter


http://blog.csdn.net/u013718120/article/details/56486408


项目地址:

https://github.com/Yalantis/ToDoList

https://github.com/songxiaoliang/EncryptionLib


(一)数据的安全性可谓是重中之重的,前两年大司频发的安全事件也是被炒的热火朝天~究竟该如何增强数据安全性,我们来唠唠。

安全,范围大的让人喘不过气来,关于安全的知识以及如何防范,暂时先不涉入,踩得深了头皮容易发麻。我们就从最简单的加密来扯扯。

加密算法已封装成library库,并对流程做了详细注释,同时实现了RSA的分段加密和填充加密,MD5的多次加密和加盐加密。已分享到github,大家可以follow,fork,快速引用到自己的项目中使用即可,开心的同时别忘了给个star吐舌头 哦~

加密工具 library 库

本文仍然围绕以Android平台的加密来分析。大概总结了8种常用的加密方法,并以流程清晰展示,方便快速上车!driving~

1.DES,3DES

  概述:对称加密算法

  优点:算法公开、计算量小、加密速度快、加密效率高

  缺点:双方都使用同样密钥,安全性得不到保证

2.AES

  概述:对称加密算法

  优点:算法公开、计算量小、加密速度快、加密效率高

  缺点:双方都使用同样密钥,安全性得不到保证

3.XOR

  概述:异或加密:原字符或数字 m 与一个数值 k 进行异或运算得到结果 r ,则用 r 与 k 做异或运算即可还原到 m

  优点:两个变量的互换(不借助第三个变量),简单的数据加密

  缺点:加密方式简单

4.Base64

  概述:算不上什么加密算法,只是对数据进行编码传输

5.SHA

  概述:非对称加密算法。安全散列算法,数字签名工具。著名的图片加载框架Glide在缓存key时就采用的此加密

  优点:破解难度高,不可逆

  缺点:可以通过穷举法进行破解

6.RSA

  概述:非对称加密算法,最流行的公钥密码算法,使用长度可变的秘钥

  优点:不可逆,既能用于数据加密,也可以应用于数字签名

  缺点:RSA非对称加密内容长度有限制,1024位key的最多只能加密127位数据

7.MD5

  概述:非对称加密算法。全程:Message-Digest Algorithm,翻译为消息摘要算法

  优点:不可逆,压缩性,不容易修改,容易计算

  缺点:穷举法可以破解

从上述简单的介绍,我们发现,算法分为了两大类:

(1)对称加密算法

(2)非对称加密算法

各自的特点也一目了然:

(1)对称加密算法可以互逆,即通过key加密,也可以通过key来解密

(2)非对称加密则不可互逆

相信这样简洁的总结,让你轻松了解了每个加密算法的优缺点以及使用场景。建议再看一下GitHub项目中MD5RAS的代码见到面试官也不怕啦!



(二)接下来主要来介绍一些加密算法的Java实现,不涉及原理。

本文由郭朝投稿。

郭朝的博客地址:

http://blog.csdn.net/smartbetter

1
概述

有两句话是这么说的: 

1)算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。 

2)编程就是算法和数据结构,算法和数据结构是编程的灵魂。

注意,这可不是我说的,是无数程序员总结的,话说的很实在也很精辟,若想长久可持续发展,多研究算法还是很有必要的,今天我给大家说说加密算法中的对称加密算法,并且这里将教会大家对称加密算法的编程使用。包含DES、3DES和AES三种对称加密算法的编程使用,干货满满。

2

对称密码算法

对称密码算法是当今应用范围最广,使用频率最高的加密算法。它不仅应用于软件行业,在硬件行业同样流行。各种基础设施凡是涉及到安全需求,都会优先考虑对称加密算法。

对称密码算法的加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程互逆。


加解密通信模型(如果图片不显示,看原文的第一个链接。)


特点:算法公开、计算量小、加密速度快、加密效率高

弱点:双方都使用同样密钥,安全性得不到保证


对称密码有流密码和分组密码两种,但是现在普遍使用的是分组密码:

分组密码工作模式:

  1. ECB:电子密码本(最常用的,每次加密均产生独立的密文分组,并且对其他的密文分组不会产生影响,也就是相同的明文加密后产生相同的密文

  2. CBC:密文链接(常用的,明文加密前需要先和前面的密文进行异或运算,也就是相同的明文加密后产生不同的密文)

  3. CFB:密文反馈

  4. OFB:输出反馈

  5. CTR:计数器

这五种工作模式主要是密码学中算法在进行推导演算的时候所应用到的。


分组密码填充方式:

  1. NoPadding:无填充

  2. PKCS5Padding:

  3. ISO10126Padding:

常用对称密码:

  1. DES(Data Encryption Standard,数据加密标准)

  2. 3DES(Triple DES、DESede,进行了三重DES加密的算法

  3. AES(Advanced Encryption Standard,高级数据加密标准,AES算法可以有效抵制针对DES的攻击算法)

先来看一下这三种算法的简单对比:


算法 密钥长度 默认密钥长度 工作模式 填充方式

DES

56

56

ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128

NoPadding、PKCS5Padding、ISO10126Padding

3DES

112、168

168

ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128

NoPadding、PKCS5Padding、ISO10126Padding

AES

128、192、256

128

ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128

NoPadding、PKCS5Padding、ISO10126Padding


下面我们看如何使用 DES / 3DES / AES 三种算法实现 对称加密:


3

DES算法

1.DES:数据加密标准,是对称加密算法领域中的典型算法 

2.特点:密钥偏短(56位)、生命周期短(避免被破解) 
3.Java实现

1)生成密钥



2)加密



3)解密



我们可以发现,加密解密我们只是设置了不同的模式而已。


4

3DES算法

1.3DES:将密钥长度增至112位或168位,通过增加迭代次数提高安全性 

2.缺点:处理速度较慢、密钥计算时间较长、加密效率不高 
3.Java实现

1)生成密钥



2)3DES加密



3)3DES解密



5

AES算法(推荐使用)


1.AES:高级数据加密标准,能够有效抵御已知的针对DES算法的所有攻击 

2.特点:密钥建立时间短、灵敏性好、内存需求低、安全性高 
3.Java实现

1)生成密钥



2)AES加密



3)AES解密


为了方便使用,我对DES / 3DES / AES 三种算法进行了工具类编写,地址:

https://github.com/smartbetter/Android-UtilsLibrary 

(新增DES/3DES/AES工具类)。




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android最常用八种加密算法 的相关文章

随机推荐

  • Node.js 高级篇(三):Mongoose 增删改查

    文章目录 一 mongoose 介绍 Mongoose 有两个特点 二 mongoose 的安装以及使用 2 1 安装 2 2 引入mongoose并连接数据库 2 3 定义Schema 2 4 创建数据模型 2 5 增 2 6 删 2 7
  • React性能分析工具 -React-Performace

    目录 介绍 用途 安装 插件安装 使用 注册观察者 1 安装微服务器
  • 避坑系列1 - 安装Ubuntu & Jenkins, 使用FinalShell

    2023年7月5日 我开始了实验室的工作 首先是要为主机安装Ubuntu 但仍然遇到了一些问题 我在想 今后会遇到许多错误 故障 在某些特定的情境下必然会遇到 比如 用rufus刷镜像时一定会遇到找不到设备的问题 我在网上找了一会才找到答案
  • 面试总结:html5的新特性(十大类)

    这里只以 根目录的方式来说明 详细的见如下连接 https www cnblogs com vicky1018 p 7705223 html 1 语义化标签 好处 1 使代码结构清晰 便于阅读2 便于SEO3 无障碍阅读4 便于后期的维护与
  • 下载多个ts文件,合并为一个mp4文件,并发送到微信

    1 使用internet download manager 来下载ts文件 2 使用tsMuxer来split ts文件 3 VLC media player convert ts to mp4 4 使用MP4Tools将两个ts文件合并
  • windows中的会话概念的总结

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 一 参考 http blog csdn net zacklin article details 7579217 以前我一直不理解Windo
  • (三)无人机数据处理算法介绍——目标识别一

    无人机目标识别技术 1 几个相近的概念 图像分割 目标识别 模式识别 目标跟踪 图像分割 根据图像的像素统计特征来对图像进行分割 使得不同类的的图像分开 目标识别 范围广一点 所有的检测目标方法 都可以叫做目标识别 模式识别 当我们采用特定
  • c++ 独一无二的不可拷贝拷贝对象

    方法一 将类的拷贝构造函数和赋值函数只声明 不定义 并定义为 private class A private friend void copy one A const Uncopyable A operator const Uncopyab
  • 简单聊一聊 Spring 事务传播行为和事务隔离级别的那些事

    前言 Spring的事务 也就是数据库的事务操作 符合ACID标准 也具有标准的事务隔离级别 所以Spring的事务隔离级别和事务的传播行为是面试中经常考察的问题 下面简单做下总结 事务并发引发的问题 脏读 一个事务读取到了另一个事务修改但
  • Python记8(tkinter

    目录 1 参考 2 窗口 2 1 创建窗口 Tk 长宽geometry 屏幕宽高 拉伸窗口resizable 窗口名title 循环mainloop 获取窗口大小 2 2 窗口最大化 最小化 正常显示 state iconify attri
  • 知识分享系统

    开发工具 eclipse idea vscode等 数据库 sqlite mysql sqlserver等 功能模块 请用文字描述 至少200字
  • 一般数据库增量数据处理和数据仓库增量数据处理的几种策略

    开篇介绍 通常在数据量较少的情况下 我们从一个数据源将全部数据加载到目标数据库的时候可以采取的策略可以是 先将目标数据库的数据全部清空掉 然后全部重新从数据源加载进来 这是一个最简单并且最直观的并且不容易出错的一种解决方案 但是在很多时候会
  • MYSQL数据库--存储引擎

    前言 数据库存储引擎是数据库底层软件组件 数据库管理系统使用数据引擎进行创建 查询 更新和删除数据操作 简而言之 存储引擎就是指表的类型 数据库的存储引擎决定了表在计算机中的存储方式 不同的存储引擎提供不同的存储机制 索引技巧 锁定水平等功
  • HTTP和HTTPS协议

    HTTP协议 HTTP协议是一种应用层的协议 全称为超文本传输协议 URL URL值统一资源定位标志 也就是俗称的网址 协议方案名 http 表示的就是协议方案名 常用的协议有HTTP协议 HTTPS协议 FTP协议等 HTTPS协议是以H
  • iOS巅峰之点击UIAlertView的灰色部分也能dismiss消失

    UIAlertView alert UITapGestureRecognizer recognizerTap void viewDidLoad super viewDidLoad Do any additional setup after
  • This action could not be completed. Try again.

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 遇到this action could not be completed try again 22421 淡定 解决方法 确保网页上iTunes Connect已经remo
  • 快手投放广告,快手广告优势有哪些呢?

    快手在短视频领域已积累大量忠实用户 形成为独特的社区文化和 老铁经济 虽然商业化进程谨慎而缓慢 但从长远来看 兼顾用户体验的商业需求也许有利于平台商业化的持续发展 对于创作者来说 在入驻一个新平台之前 需要对平台的整体调性全面了解 快手是更
  • 软件工程第一节课 课程引言

    课程引言 一 需要网站系统开发需要掌握的技术 网站的开发技术有很多 主要包括CGI ASP PHP JSP ASP NET等 每一种技术都有其自身的特点与局限性 具体的网站开发技术要根据网站的功能需求 面对的受众 访问量 开发者熟悉的技术等
  • 开源协议说明LGPL

    文章目录 闭源程序 LGPL 闭源程序 不以某种形式开放源代码 也就是说 用户 包括其他开发者 不能获取其源代码的程序 LGPL LGPL协议是一个商业友好的协议 这里的含义是 你可以用 LGPL协议开发商业程序 当然也可以是非商业的闭源程
  • Android最常用八种加密算法

    原文链接 http blog csdn net smartbetter http blog csdn net u013718120 article details 56486408 项目地址 https github com Yalanti