📘
技术积累
  • 简介
  • 学习方法
    • 如何提高编程技能
  • 基础知识
    • Linux
      • Linux常用指令
      • rsync
      • VIM
      • tmate命令行分享
      • 命令别名存储
      • 项目服务器重启
    • 设计模式
    • 自动化接口使用
    • 项目经理培训
    • 报价策略
    • 培训材料撰写
  • 工具
    • Ajax
    • AutV
    • axios
    • Babel
    • bower
    • codecov
    • crypto
    • CSS3D
    • Docker
    • Echarts
    • Git
      • 如何删除项目
      • 多个ssh_key的生成与使用
      • 常用命令清单
    • Gitbook
      • Gitbook 更多配置
      • Markdown 标记示例
    • gulp
    • Istanbul
    • JEST
    • jMeter
    • js-md5
    • Kama
    • LESS Sass 编译工具Koala介绍
    • Lodash
    • Markdown
    • Maven
    • Moment
    • Nginx
    • NPM
    • NVM
    • particles.js粒子效果
    • PM2
    • Qs
    • Swagger
    • Webpack
    • Webpack
    • Yarn
    • Yeoman使用
  • 平台
    • 代码托管平台 GitLab
    • 代码安全平台 sonarqube
  • 语言和框架
    • 工作流
    • Angular
      • FUSE-Angular前端框架项目初始化
      • AngularJs-toaster-Angular提示弹框插件
      • ng-file-upload-Angular上传图片插件
      • ngclipboard-Angular复制到剪贴板插件
    • Vue
      • ElementUI-Vue前端框架项目初始化
      • clipboard使用
      • mobileSelect.js使用
      • vue-cookies使用
      • vue-fullpage使用
      • vue-router使用
      • Vue的Ref属性
      • Vuex使用
      • Vux使用
      • vux-uploader使用
      • Vue生命周期图例
      • iview-loader使用
    • cycleJs
    • ES6
      • async/await
    • react
      • react生命周期
      • create-react-app
      • Rematch
      • react-router
      • react-router-dom
      • css-in-js
    • TypeScript
      • VueAndTypeScript
    • 微信小程序
    • Hexo博客框架
      • Hexo博客框架-图片问题处理
      • Hexo博客框架-切换主题
    • SmartClient
    • HybridApp混合开发
      • uniapp
  • 代码审查
    • 代码命名规范
    • 页面代码结构
    • JavaScript标准编码风格
    • AirbnbJavaScript风格指南
  • 其他
    • 收藏|激发灵感的33套网页配色方案(附色值)
    • KPI&OKR
    • 测试自动化
    • view
    • 前端面试
      • 项目方面
      • html+css
      • JavaScript方面
      • JavaScript面试
      • 框架方面
      • 前端面试3+1
        • 20190420
        • 20190419
        • 20190418
        • 20190417
    • Linux面试题
    • JAVA面试
    • 测试面试
    • 钉钉使用
    • sd360
  • 前端知识积累
    • css3单位汇总
    • CSS解决loading效果
    • 深度克隆的方法
    • 加密技术
    • 解决ios下的微信页面背景音乐无法自动播放问题
    • 一套绝佳的图标字体库和CSS框架:Font Awesome
    • 关于ico图标不显示解决办法
    • 提升页面响应速度
    • innerHTML引入的script如何使用
    • JavaMap转Json
    • JS开发工具大全
    • 移动端插件
    • 移动端页面通过前端方法禁止ios页面横屏方法
    • 图片资源网站
    • 排序方式
    • 图片预览上传
    • Windows部署时脚本报错
Powered by GitBook
On this page
  • 1 简介与分类
  • 1.1 简介
  • 1.2 分类
  • 1.2.1 专用密钥
  • 1.2.2 对称密钥
  • 1.2.3 公开密钥
  • 1.2.4 非对称加密技术
  • 2 加密算法详解
  • 2.1 专用密钥
  • 2.2 对称密钥
  • 2.3 公开密钥
  • 2.4 非对称加密技术
  • 参考资料

Was this helpful?

  1. 前端知识积累

加密技术

作者:高天阳

邮箱:13683265113@163.com

更改历史

*2018-12-06     高天阳     初始化文档

1 简介与分类

什么是数据加密技术

所谓数据加密(Data Encryption)技术是指将一个信息(或称明文,plain text)经过加密钥匙(Encryption key)及加密函数转换, 变成无意义的密文(cipher text),而接收方则将此密文经过解密函数、解密钥匙(Decryption key)还原成明文。加密技术是网络安全技术的基石。

1.1 简介

密码技术是通信双方按约定的法则进行信息特殊变换的一种保密技术。根据特定的法则,变明文(Plaintext)为密文(Ciphertext)。 从明文变成密文的过程称为加密(Encryption); 由密文恢复出原明文的过程,称为解密(Decryption)。 密码在早期仅对文字或数码进行加、 解密,随着通信技术的发展,对语音、图像、数据等都可实施加、解密变换。 密码学是由密码编码学和密码分析学组成的,其中密码编码学主要研究对信息进行编码以实现信息隐蔽, 而密码分析学主要研究通过密文获取对应的明文信息。密码学研究密码理论、密码算 法、密码协议、密码技术和密码应用等。 随着密码学的不断成熟,大量密码产品应用于国计民生中,如USB Key、PIN EntryDevice、 RFID 卡、银行卡等。 广义上讲,包含密码功能的应用产品也是密码产品,如各种物联网产 品,它们的结构与计算机类似,也包括运算、控制、存储、输入输出等部分。 密码芯片是密码产品安全性的关键,它通常是由系统控制模块、密码服务模块、存储器控制模块、功 能辅助模块、通信模块等关键部件构成的。

数据加密技术要求只有在指定的用户或网络下,才能解除密码而获得原来的数据,这就需要给数据发送方和接受方以一些特殊的信息用于加解密, 这就是所谓的密钥。其密钥的值是从大量的随机数中选取的。按加密算法分为专用密钥和公开密钥两种。

1.2 分类

  • 专用密钥

  • 对称密钥

  • 公开密钥

  • 非对称加密技术

1.2.1 专用密钥

专用密钥,又称为对称密钥或单密钥,加密和解密时使用同一个密钥,即同一个算法。如DES和MIT的Kerberos算法。 单密钥是最简单方式,通信双方必须交换彼此密钥,当需给对方发信息时,用自己的加密密钥进行加密,而在接收方收到数据后,用对方所给的密钥进行解密。 当一个文本要加密传送时,该文本用密钥加密构成密文,密文在信道上传送,收到密文后用同一个密钥将密文解出来,形成普通文体供阅读。 在对称密钥中,密钥的管理极为重要,一旦密钥丢失,密文将无密可保。这种方式在与多方通信时因为需要保存很多密钥而变得很复杂, 而且密钥本身的安全就是一个问题。

1.2.2 对称密钥

对称密钥是最古老的,一般说“密电码”采用的就是对称密钥。由于对称密钥运算量小、速度快、安全强度高,因而如今仍广泛被采用。

DES是一种数据分组的加密算法,它将数据分成长度为64位的数据块,其中8位用作奇偶校验,剩余的56位作为密码的长度。 第一步将原文进行置换,得到64位的杂乱无章的数据组;第二步将其分成均等两段; 第三步用加密函数进行变换,并在给定的密钥参数条件下,进行多次迭代而得到加密密文。

1.2.3 公开密钥

公开密钥,又称非对称密钥,加密和解密时使用不同的密钥,即不同的算法,虽然两者之间存在一定的关系,但不可能轻易地从一个推导出另一个。 有一把公用的加密密钥,有多把解密密钥,如RSA算法。 非对称密钥由于两个密钥(加密密钥和解密密钥)各不相同,因而可以将一个密钥公开,而将另一个密钥保密,同样可以起到加密的作用。

在这种编码过程中,一个密码用来加密消息,而另一个密码用来解密消息。在两个密钥中有一种关系,通常是数学关系。 公钥和私钥都是一组十分长的、数字上相关的素数(是另一个大数字的因数)。 有一个密钥不足以翻译出消息,因为用一个密钥加密的消息只能用另一个密钥才能解密。 每个用户可以得到唯一的一对密钥,一个是公开的,另一个是保密的。公共密钥保存在公共区域,可在用户中传递,甚至可印在报纸上面。 而私钥必须存放在安全保密的地方。任何人都可以有你的公钥,但是只有你一个人能有你的私钥。 它的工作过程是:“你要我听你的吗?除非你用我的公钥加密该消息,我就可以听你的,因为我知道没有别人在偷听。 只有我的私钥(其他人没有)才能解密该消息,所以我知道没有人能读到这个消息。我不必担心大家都有我的公钥,因为它不能用来解密该消息。”

公开密钥的加密机制虽提供了良好的保密性,但难以鉴别发送者,即任何得到公开密钥的人都可以生成和发送报文。 数字签名机制提供了一种鉴别方法,以解决伪造、抵赖、冒充和篡改等问题。

1.2.4 非对称加密技术

数字签名一般采用非对称加密技术(如RSA),通过对整个明文进行某种变换,得到一个值,作为核实签名。 接收者使用发送者的公开密钥对签名进行解密运算,如其结果为明文,则签名有效,证明对方的身份是真实的。 当然,签名也可以采用多种方式,例如,将签名附在明文之后。数字签名普遍用于银行、电子贸易等。

数字签名不同于手写签字:数字签名随文本的变化而变化,手写签字反映某个人个性特征,是不变的; 数字签名与文本信息是不可分割的,而手写签字是附加在文本之后的,与文本信息是分离的。

值得注意的是,能否切实有效地发挥加密机制的作用,关键的问题在于密钥的管理,包括密钥的生存、分发、安装、保管、使用以及作废全过程。

2 加密算法详解

2.1 专用密钥

略

2.2 对称密钥

略

2.3 公开密钥

略

2.4 非对称加密技术

参考资料

Previous深度克隆的方法Next解决ios下的微信页面背景音乐无法自动播放问题

Last updated 4 years ago

Was this helpful?

数据加密技术-百度百科
非对称加密算法-百度百科