`
javathinker
  • 浏览: 228785 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

OpenSSL 中文手册 之二 OpenSSL 简介-加密算法

阅读更多

加密算法的一些常识


要理解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的3DES加密算法

    3DES加密算法,使用openssl库,ECB算法,pkcs7padding填充模式(借鉴网上的算法,并经过自己的改良,可以实现加密与解密)

    易语言OpenSSL加密算法

    易语言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 实现国密算法(加密和解密)

    国密算法--Openssl 实现国密算法(加密和解密),内涵对称算法,非对称算法加解密流程,图文直观,并附有C语言代码

    基于OPENSSL的加密算法工具

    OpenSSL是一个强大的安全套接字层密码库,Apache使用它加密HTTPS,OpenSSH使用它加密SSH,但是,你不应该只将其作为一个库来...本工具调用了OPENSSL中的加密算法库,用来实现包含DES、AES、RSA以及摘要算法的加解密。

    使用openssl中aes加密算法实现文件的加密解密(源代码)

    实现EVP_aes_128(256)_ecb模式,适合初学者熟悉openssl中的加密解密函数。可运行..

    openssl rsa算法加密

    openssl rsa算法加密,

    openssl源码-AES加密算法

    AES

    易语言OpenSSL加密算法源码

    易语言OpenSSL加密算法源码。@资源源码站。

    SHA256算法C++代码openssl库实现

    对sha256在openssl库中调用和组装生成可以执行的基于openssl库的sha256模块,可供之后的生日攻击和长度扩展攻击等使用该模块。 可以运行test.cpp对该模块的散列加密功能进行简单测试。 运行指导 将源码clone到...

    易语言源码易语言OpenSSL加密算法源码.rar

    易语言源码易语言OpenSSL加密算法源码.rar

    ECC算法(基于openssl)

    需要了解 ECC 加密的,可以参考一下,这个是基于openssl 的ECC 算法。解压后,test_ecc 里面是测试代码,大家看看,就明白了ECC算法的流程,里面有生成key,加密、解密。

    openssl-1.0.0a

     OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式...

    Windows x64 的 Openssl 1.1.1 安装包msi

    OpenSSL被曝出现严重安全漏洞后,发现多数通过SSL协议加密的网站使用名为OpenSSL的开源软件包。OpenSSL漏洞不仅影响以https开头的网站,黑客还可利用此漏洞直接对个人电脑发起"心脏出血"(Heartbleed)攻击。据分析,...

    基于国产密码算法的开源OpenSSL密码库

    TaSSL,在国际开源OpenSSL基础上融入了SM2、SM3、SM4国密算法,按照国密SSL标准实现了基于国密双证书体系和国产密码算法的SSL安全通讯服务,并兼容原有OpenSSL的架构体系,彻底解决了国内商用密码体系无法构建基于...

    使用openssl 1.1.1版本,调试国密SM2签名、验签、加密解密、SM3

    OpenSSL 1.1.1 新特性: 全面支持国密SM2/SM3/SM4加密算法,最近的项目涉及到国密,又局限于资源有限,只能只能上了。

    基于OpenSSL的加密传送信息

    利用开源的OpenSSL包开发的小程序,实现了加密传送信息的功能,包括加密,数字签名,防抵赖等常用信息安全功能

    国密SM2算法基于Openssl实现

    基于Openssl算法库实现的SM2算法。实现数字签名和密钥交换,公钥加密没有实现。全部源代码,需要Openssl库支持,VC工程。 KDF使用标准HASH算法,没有使用SM3。 可参考作者的SM3算法实现KDF。 ECC曲线使用SM2算法建议...

    Win64OpenSSL-1_0_2u(win10可用).exe

    OpenSSL被曝出现严重安全漏洞后,发现多数通过SSL协议加密的网站使用名为OpenSSL的开源软件包。OpenSSL漏洞不仅影响以https开头的网站,黑客还可利用此漏洞直接对个人电脑发起"心脏出血"(Heartbleed)攻击。据分析,...

Global site tag (gtag.js) - Google Analytics