【算法】加解密算法概要

关于网络通信、设备交互等计算机通信场景中的常用加解密算法概要。

 

加密算法类型

 

对称加密

加密、解密用的是同样的密钥,通常密钥较小256bit。

最快速、最简单的一种加密方式。

效率高,被广泛使用在很多加密协议的核心中。

 

在对称加密算法中常用的算法有:DES、TDEA /3DES、AES、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

 

非对称加密

为数据的加密、解密提供了一对密钥,公钥(PK)、私钥(SK)。

在加密过程中,发送方利用接收方的公钥进行加密,接收方利用自己的私钥进行解密;

在认证过程中,发送方利用自己的私钥进行签名,接收方利用发送方的公钥进行验签。

 

在非对称加密算法中常用的算法有:RSA、ECC(椭圆曲线加密算法)、Elgamal、背包算法、Rabin、D-H。

 

 

具体算法

 

常见的对称加密算法

 

DES

DES是Data Encryption Standard(数据加密标准)。

分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法;

密钥长64位,实际上56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1);

分组后的明文组 和 56位的密钥 按位替换或交换的方法形成密文组。

 

TDES/3DES

Triple DES的缩语(即三重数据加密标准)。

TDES/3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密。

 

AES

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

AES的基本要求是,采用对称分组密码体制,密钥的长度最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。

AES加密数据块分组长度必须为128bit,密钥长度可以是128bit、192bit、256bit中的任意一个(如果数据块及密钥长度不足时,会补齐)。

AES加密有很多轮的重复和变换。大致步骤如下:

  1. 密钥扩展(KeyExpansion),

  2. 初始轮(Initial Round),

  3. 重复轮(Rounds),每一轮又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey,

  4. 最终轮(Final Round),最终轮没有MixColumns。

 

RC4

RC4(Rivest Cipher 4)是一种流加密算法,对字节流进行加解密,它的密钥长度范围在[1,255]可变。

其算法的核心是“随机数生成器”+“异或运算”组组成。初始化密钥时,给定一个密钥后,伪随机数生成器接受密钥并构造生成出S盒;在加解密时,利用S-Box对明文数据进行逐字节加密。

 

常见的非对称加密算法

 

RSA算法

RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,因此命名RSA。

公钥加密算法,通常是先生成一对RSA密钥,公钥(PK)、私钥(SK),SK取决于PK,

  1. 模数N 和 PK用于对数据进行加密,加密算法E;

  2. 模数N 和 SK用于对数据进行解密,解密算法D;

通信双方各自秘密保留各自的私钥,并且得到对方的公钥就可以进行通信。

 

加密通信中,PK加密,SK解密

签名交易中,SK签名,PK验签。

 

ECC(椭圆曲线加密算法)

ECC是Elliptic curve cryptography(椭圆曲线加密算法)。

 

Elgamal

ElGamal算法,是一种较为常见的加密算法,它是基于1985年提出的公钥密码体制和椭圆曲线加密体系。既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。

 

在加密过程中,生成的密文长度是明文的两倍,且每次加密后都会在密文中生成一个随机数K,在密码中主要应用离散对数问题的几个性质:求解离散对数(可能)是困难的,而其逆运算指数运算可以应用平方-乘的方法有效地计算。

 

背包算法

这是一个非对称算法,即可生成多个不同的公钥,分发给其他人,然后其他人用各自的公钥加密文件,而算法只生成一个私钥(自己保存),这私钥可解密不同公钥加密的文件。在不知道私钥的前提下,破解文件是一个NP难问题。

 


 

杂凑/摘要的基本定义

 

Hash

散列算法,把任意长度的输入,变换成固定长度(128bit,即16Byte)的输出,该输出就是散列值。并且不可逆向解析原本输入的内容。

Hash就是找到一种数据内容和数据存放地址之间的映射关系。

 

SHA

安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。

 

且若输入的消息不同,它们对应到不同字符串的机率很高。

 

SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512。

 

 

杂凑/摘要的实际算法

 

HASH的实际算法

 

MD4(HASH算法)

是一种用来测试信息完整性的密码散列函数的实行。其摘要长度为128位,一般128位长的MD4散列被表示为32位的十六进制数字。

 

MD5(HASH算法)

对输入以512位分组,输出是4个32位字的级联,与MD4相同。

不可逆的加密算法,最牢靠之一,对任何字符串都可以加密成一段唯一的固定长度的代码。

一般认为MD5码可以唯一地代表原信息的特征,通常用于密码的加密存储、数字签名、文件完整性验证。

 

MAC算法

MAC算法 (Message Authentication Codes) 带秘密密钥的Hash函数:消息的散列值由只有通信双方知道的秘密密钥K来控制。此时Hash值称作MAC。

MAC算法原理(以直联银联pos和POS中心通讯为例):

  1.  将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MAC ELEMEMENT BLOCK (MAB)。

  2. 对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字节,则添加“0X00”。

 

SHA的实际算法

 

SHA

安全哈希算法,可以对任意长度的数据运算生成一个160位的数值;

 

SHA-1

生成20Byte的哈希结果。

在SHA1算法中,我们必须把原始消息(字符串,文件等)转换成位字符串。SHA1算法只接受位作为输入。

SHA-256

生成32Byte的哈希结果。

 


 

 

总结

 

所有算法的研究和设计,离不开数学的知识。

 

欲善其事,先利其器!对于普通开发者,了解相关的算法介绍、使用场景、使用的业务逻辑,若要深入研究算法的设计,仍需要下大工夫!

 

更多技术干货分享,敬请关注微信公众号:DigCore

或者扫码关注公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值