加密算法的一些常识
要理解ssl先要知道一些加密算法的常识.
加密算法很容易理解啦,就是把明文变成人家看不懂的东西,然后送给自己想要的送到的地方,接收方用配套的解密算法又把密文解开成明文,这样就不怕在路世上如果密文给人家截获而泄密。
加密算法有俩大类,第一种是不基于KEY的,举个简单的例子,我要加密"fordesign"这么一串字符,就把每个字符都变成它的后一个字符,那么就是"gpseftjhm"了,这样的东西人家当然看不明白,接收方用相反的方法就可以得到原文。当然这只是个例子,现在应该没人用这么搞笑的加密算法了吧。
不基于KEY的加密算法好象一直用到了计算机出现。我记得古中国军事机密都是用这种方式加密的。打战的时候好象军队那些电报员也要带着密码本,也应该是用这种方式加密的。这种算法的安全性以保持算法的保密为前提。
这种加密算法的缺点太明显了,就是一旦你的加密算法给人家知道,就肯定挂。日本中途岛惨败好象就是密码给老米破了。设计一种算法是很麻烦的,一旦给人破了就没用了,这也忑浪费。
我们现在使用的加密算法一般是基于key的,也就是说在加密过程中需要一个key,用这个key来对明文进行加密。这样的算法即使一次被破,下次改个key,还可以继续用。
key是一个什么东西呢?随便你,可以是一个随机产生的数字,或者一个单词,啥都行,只要你用的算法认为你选来做key的那玩意合法就行。
这样的算法最重要的是:其安全性取决于key,一般来说取决于key的长度。也就是说应该保证人家在知道这个算法而不知道key的情况下,破解也相当困难。其实现在常用的基于KEY的加密算法在网络上都可以找到,很多革命同志(都是老外)都在想办法破解基于key的加密算法又包括俩类:对称加密和不对称加密。对称加密指的是双方使用完全相同的key,最常见的是DES.DES3,RC4等。对称加密算法的原理很容易理解,通信一方用KEK加密明文,另一方收到之后用同样的KEY来解密就可以得到明文。
不对称加密指双方用不同的KEY加密和解密明文,通信双方都要有自己的公共密钥和私有密钥。举个例子比较容易理解,我们们假设通信双方分别是A,B.
A,拥有KEY_A1,KEY_A2,其中KEY_A1是A的私有密钥,KEY_A2是A的公共密钥。
B,拥有KEY_B1,KEY_B2,其中KEY_B1是B的私有密钥,KEY_B2是B的公共密钥。
公共密钥和私有密钥的特点是,经过其中任何一把加密过的明文,只能用另外一把才能够解开。也就是说经过KEY_A1加密过的明文,只有KEY_A2才能够解密,反之亦然。
通信过程如下:
A-------->KEY_A2------------>B
A<--------KEY_B2<------------A
这个过程叫做公共密钥交换,老外管这叫keyexchange.之后A和B就分别用对方的公共密钥加密,用自己的私有密钥解密。
一般公共密钥是要发布出去的,然后你通过自己的私有密钥加密明文,人家用你的公共密钥解密,如果能解开,那么说明你是加密人,这就是SSL使用的验证机制。
常用的不对称加密一般有RSA,DSA,DH等。我们一般使用RSA.
数字签名也是不对称加密算法的一个重要应用,理解它对于理解SSL很重要的,放在这里一起介绍一下。
签名是什么大家都很熟悉吧?证明该东西是你写的,是你发布的,你就用签名搞定。看看那些重要文件都要头头签名。数字签名就是数字化的签名了。记得公用密钥和私有密钥的特征吗?只有你一个人有你自己的私有密钥。而你的公用密钥是其他人都知道的了。那么你在写完一封邮件之后,用自己的私有密钥加密自己的名字,接收人用你的公共密钥解开一看,哦,是你发的。这就是你的数字签名过程了。
上面的解释是很简化的了,其实数字签名比这个复杂多了,但我们没有了解的必要,知道数字签名是这么一回事就可以了。
还有一种我们需要知道的加密算法,其实我不觉得那是加密算法,应该叫哈希算法,英文是messagedigest,是用来把任何长度的一串明文以一定规则变成固定长度的一串字符串。它在SSL中的作用也很重要,以后会慢慢提及的。一般使用的是MD5,SHA.
base64不是加密算法,但也是SSL经常使用的一种算法,它是编码方式,用来把asc码和二进制码转来转去的。
具体的加密解密过程我们不需要了解,因为SSL根本不关心。但了解加密算法的一些基本原理是必要的,否则很难理解SSL。
对加密算法的细节有兴趣的同志,可以去网络上找这些加密算法的原理的文章和实现的程序来研究,不过先学数论吧。
分享到:
相关推荐
OpenSSL 对称加密算法中如何添加新算法 OpenSSL 是一个开源的加密算法库,它提供了对称加密算法、非对称加密算法、哈希算法等多种加密算法。OpenSSL 的对称加密算法中可以添加新算法,以满足不同的加密需求。下面...
这个库包含了各种加密算法,如RSA、DSA、ECC等,以及用于处理公钥基础设施(PKI)的工具,如生成证书请求、处理X.509证书等。 `openssl-devel` 是OpenSSL的开发库,包含了头文件和静态链接库,用于编译和链接到...
同时,它还支持最新的加密算法,如ChaCha20和Poly1305,提供了更高级别的加密强度。 性能方面,OpenSSL 1.1.1引入了多项优化,包括多线程支持。这使得在多核处理器系统中,OpenSSL可以充分利用硬件资源,提高加密和...
AES是一种广泛采用的对称加密算法,它提供了高度的数据安全性,而ECB则是其工作模式之一,虽然不推荐用于大块数据加密,但在某些场景下仍然适用。 AES-128-ECB加密的特点: 1. **AES-128**:AES标准支持128、192和...
9. **支持的加密算法**:除了常用的3DES算法之外,OpenSSL还支持许多其他的加密算法,例如AES系列算法、Blowfish等。需要注意的是,某些加密算法可能在编译时被禁用,或者只在特定条件下可用。 #### 五、示例演示 ...
### 使用OpenSSL中的AES加密算法实现文件的加密与解密 #### 一、概述 本文档将详细介绍如何使用OpenSSL库中的AES加密算法对文件进行加密和解密操作。主要聚焦于EVP_aes_128_ecb和EVP_aes_256_ecb两种模式,并提供...
3DES加密算法,使用openssl库,ECB算法,pkcs7padding填充模式(借鉴网上的算法,并经过自己的改良,可以实现加密与解密)
OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现,它包含了各种加密算法、常用的密钥和证书管理工具,以及SSL协议,广泛应用于网络服务器,用于加密通信,保护用户数据的隐私。 描述中的“适用于...
AES(Advanced Encryption Standard),即高级加密标准,是目前广泛使用的对称加密算法之一。它在信息安全领域扮演着至关重要的角色,为数据传输和存储提供了坚实的保护。AES是由NIST(美国国家标准与技术研究院)于...
易语言OpenSSL加密算法源码,OpenSSL加密算法,AES_CBC_encrypt,NoPadding,pkcs5padding,ISO10126Padding,Padding_dec,random,Base64Encoding,Base64Decrypt,AES_set_encrypt_key,AES_cbc_encrypt,AES_set_decrypt_key
- 使用 `openssl_encrypt` 函数进行加密,第一个参数是 `$string`,第二个参数指定加密算法及模式,这里是 `'AES-128-ECB'`,表示使用AES-128位加密并采用ECB模式。 - 第四个参数 `OPENSSL_RAW_DATA` 表示加密后的...
OpenSSL 是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现库,同时也包含各种加密算法、证书处理和其他安全功能。在iOS开发中,如果你的应用需要进行安全的网络通信,如HTTPS,或者需要对数据进行加密解密...
**openssl** 是一个开源的密码学库,包含了各种常用的加密算法、数字证书、随机数生成器等功能。在服务器上安装openssl可以提供SSL/TLS支持,使得服务器能够处理HTTPS连接。这对于需要处理敏感信息的网站,如在线...
OpenSSL是一个开源的库,包含了多种加密算法、安全协议以及相关的实用程序。它主要用于实现SSL/TLS协议,这些协议是确保网络通信安全的基础,例如HTTPS协议就是基于SSL/TLS的。本主题将深入探讨"前端开源库-openssl-...
国密算法--Openssl 实现国密算法(加密和解密),内涵对称算法,非对称算法加解密流程,图文直观,并附有C语言代码
### OpenSSL简介及核心知识点 #### 一、OpenSSL概述 OpenSSL是一款强大的工具包,用于实现安全套接层(Secure Sockets Layer, SSL)及传输层安全(Transport Layer Security, TLS)协议,同时提供大量的密码算法、...
- 支持多种加密算法,如RSA、AES、DES、SHA等,提供数据加密和解密功能。 - 数字证书管理,包括证书的生成、验证和签名,确保通信双方的身份可信。 - 非对称加密和对称加密的结合,实现高效且安全的数据传输。 - ...
易语言OpenSSL加密算法源码是为编程爱好者和开发者提供的一种使用易语言实现的加密算法,基于著名的OpenSSL库。OpenSSL是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用的密钥和证书封装管理功能,...
OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现库,它包含了各种加密算法、常用的密钥和证书处理函数,以及SSL协议的实现。在OpenSSL 1.1.1稳定版中,我们找到了其在安全性和性能上的显著提升,...
1. `openssl111-1.1.1m-2.el7.x86_64.rpm`:这是 OpenSSL 的核心库,提供了 SSL/TLS 协议实现以及加密算法的支持。 2. `openssl111-devel-1.1.1m-2.el7.x86_64.rpm`:开发人员需要的包,包含了头文件和开发库,使得...