数据加密

作者: 某昆 | 来源:发表于2019-09-17 11:20 被阅读0次

前言

一般来说,目前的安全相关措施一共有两类,一种是加密,其次则是消息摘要。加密很容易理解,加解密数据以达到通信安全的目的。消息摘要则是根据原始数据计算相应编码,如果原始数据被篡改,重新计算时,编码会变化。

  • 加密,有对称加密和非对称加密两类,RSA则是非常常见和流行的一种数据加密方式
  • 消息摘要,常见的有MD5以及SHA-1等方式

HTTPS原理文章中,介绍 HTTPS 原理时,可以看到,加密和消息摘要方式都用上了。

RSA

在介绍RSA之前,需要介绍一些数学知识。

互质关系:如果两个正整数,除了 1 以外没有其他公因子,就称这两个数是互质关系。比如 3 和 5,13 和 31 等

欧拉函数:求小于 N 的正整数中与 N 互质的数的数目。φ(N),如果 N 可以分解成两个互质的整数之积,N=pq,则 φ(N)=φ(p)φ(q)=(p−1)(q−1)

模反元素:如果两个正整数 a 和 n 互质,那么一定可以找到整数 b,使得 ab−1 被 n 整除:ab ≡ 1 (mod n)

欧拉定理:当 a,n 为两个互素的正整数时,则有 a^{φ(n)} ≡ {1(modn)

RSA的安全性基于大数的因式分解难度,一般而言,RSA中的密钥长度为1024位,数太大了,目前已经的被破解的最大长度密钥是768位,所以说RSA是安全可靠的。它的原理最后分析,先看看过程。

(1)选择一对不同的、足够大的素数p,q。
(2)计算n=pq。
(3)计算f(n)=(p-1)(q-1),同时对p, q严加保密,不让任何人知道。
(4)找一个与f(n)互质的数e,且1<e<f(n)。
(5)计算d,使得de≡1 mod f(n)。这个公式也可以表达为d ≡e-1 mod f(n)
这里要解释一下,≡是数论中表示同余的符号。公式中,≡符号的左边必须和符号右边同余,也就是两边模运算结果相同。显而易见,不管f(n)取什么值,符号右边1 mod f(n)的结果都等于1;符号的左边d与e的乘积做模运算后的结果也必须等于1。这就需要计算出d的值,让这个同余等式能够成立。
(6)公钥KU=(e,n),私钥KR=(d,n)。

(7)加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,则加密过程为: (8)解密过程为:

整个过程一共用到了以下几个数

  p    q    n    φ(n)    e    d

这六个数字之中,公钥用到了两个(n和e),其余四个数字都是不公开的。其中最关键的是d,因为n和d组成了私钥,一旦d泄漏,就等于私钥泄漏。

那么,有无可能在已知n和e的情况下,推导出d?

(1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。

(2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。

(3)n=pq。只有将n因数分解,才能算出p和q。

而前文有提到,要将一个大整数进行因式分解,这是非常非常困难的一件事,所以RSA算法的安全性是有保障的。

最后,使用公钥加密,加密要用 (n,e)

m^e ≡ c (mod n)

而解密要用私钥(n,d)

c^d ≡ m (mod n)

消息摘要

消息摘要,其实非常得常见,如果MD5算法,在android中apk的签约中都会乃至的SHA算法等,都是消息摘要,它的特点是单向的,源数据通过算法得到编码,但无法通过编码反推源数据,同时源数据变化一点点都会导致编码变化。

所以消息摘要常常用在这种场景下:接收端收到信息以消息摘要,将信息解密之后,再计算它的消息摘要,如果和收到的消息摘要不一样,则可以判定收到的信息被它人篡改过。

apk签名中用到的SHA算法也是起到类似的作用,除非拥有原签名可以重新签名,否则破解的apk肯定会被识别的。

部分信息来源自:感谢分享
https://www.cnblogs.com/jiftle/p/7903762.html
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

相关文章

  • Android数据加密(转)

    Android数据加密之Rsa加密 Android数据加密之Aes加密 Android数据加密之Des加密 And...

  • Python-RSA加密实现

    实现RSA不对称加密算法的大数据加密 1.加密模块:传入参数:需要加密的字节数据,返回数据:加密后的字节数据2.解...

  • DES加密

    知识补充: 数据安全包含通道加密https和上传数据加密全问题(一些算法加密,对称加密和非对称加密)。 ...

  • iOS加密1——概述

    一、简单说明数据安全包含通道加密https和上传数据加密全问题(一些算法加密,对称加密和非对称加密)。加密算法通常...

  • iOS加密——概述

    一、简单说明数据安全包含通道加密https和上传数据加密全问题(一些算法加密,对称加密和非对称加密)。加密算法通常...

  • iOS-归档NSCoding序列化

    归档 归档->数据持久化的方式->加密(把文件加密《不是把数据加密》 归档分为: 1、存储数据(编码、序列化、归档...

  • 安全编程基础

    安全编程基础 目录 数据加密 数字签名 哈希算法 数字签名 PKI体系 加密通信 一.数据加密 分类:对称加密,非...

  • 数据加密技术概述

    数据加密技术的包括这样几方面的内容:数据加密、数据解密、数字签名、签名识别以及数字证明等。 数据加密模型组成 明文...

  • Java面试

    一、数据库 1、常见的数据库查询修改和数据库加密问题 (1)数据库的密码加密:单向加密,insertinto...

  • 加密习题

    1.现代密码学可以加密什么数据?文本数据和二进制数据都可以2.对称加密的加密与解密过程使用密钥进行加密算法,对数据...

网友评论

    本文标题:数据加密

    本文链接:https://www.haomeiwen.com/subject/twbuyctx.html