linux简单介绍加密解密算法

本文发布时间: 2019-Mar-21
加密解密的技术:对称加密 加密方和解密方使用是同一个密钥,加密解密的速度都很快,先将数据明文 分成数据块儿,一般来讲是大小相同的,如果到最后剩下的不能与其他数据块儿的 大小相同,那么就给它添加一些填充物,然后对每个数据块儿逐个加密, 然后把加密后的数据块儿发给对方,每一次管理一块儿, 但是,加密后的块儿怎么处理,因为每一个块儿都是单独处理,对方在破解数据时 每一块儿独立破解,也就是说这样的加密过程对反破解并没有任何帮助, 对于加密以后的数据块儿的处理有以下两种方法 ECB:每一块儿单独加密,加密一个传递一个, CBC:加密或密文块儿链,通过抑或运算实现,每一个数据块儿,在发送给对方 之前会实现将此数据块儿与此前的数据块儿做一次抑或运算,并把结果发送给对方 所以得不到第一个块儿,得到其他也就没有用,即使是第一块,也会和一个随机数 进行抑或运算 其最大好处在于,做两次抑或运算后可以将数据还原算法:DES:数据加密标准,使用56位的密钥长度 AES:高级加密标准,可以使用128、192、256三种长度的密钥 3DES:对原有加密3次, Blowfish Twofish RC6 IDEA CAST5缺陷:1、一个人跟众多对象通信的时候需要记的密码过多 2、密钥分发困难,是最大的难题,没有一种可靠的手段将密钥送给一个 没有见过面的对象非对称加密公钥加密算法:DSA,RSA,EIGamal加密方和解密方使用不同的密钥功能:加密解密 用户的身份认证,RSA两者都可以实现,而DSA只能加密数据公钥,私钥公钥是从私钥中抽出的一段特征,公钥隐含在私钥中现在主流的密钥长度是2048缺陷:1、加密速度慢,比对称加密慢3个数量级 1000倍,一个数量级10倍 2、公钥加密一般不用于加密数据,主要用于实现用户认证,数据加密 主要是通过对称加密实现的如何实现用户认证: 现在假设,有两个通信的对象,一个较小黑,一个较小白,现在小黑给小白发了 一封电子邮件,但是,小白在接受邮件的时候不希望自己的邮件的内容被篡改, 这时小黑就将邮件内容加密且说自己是小黑,并产生一个公钥和一个私钥, 私钥小黑会随身携带 而且不能外泄,公钥则连同邮件一起发给小白,这是小白拿着小黑的公钥如果能够 解密,则说明小黑就是小黑...这就实现了认证,但是如果小黑加密的数据很大,再加上 公钥加密要用很久时间,等加密好,小黑也无语了,所以小黑加密的不是数据 而是这段数据的特征值,说到特征值,下面就说一下单向加密》》》单向加密雪崩效应:输入的数据有一点点不同,结果会有巨大不同,主要目的在防暴力破解单向加密就是去计算一段数据的特征值,加密过程是不可逆的,是去计算一段数据的特征码,是独一无二的,用于对数据完整性的校验无论你输入的数据是多长,输出的结果都是一样长度MD5:message digest,输出结果固定长度128bitSHA1:secure hash algorithm安全的哈希算法,输出结果固定长度160bit身份认证:单向加密在实现用户身份认证的时候不会去加密整段数据,而是先去计算这段数据的特征值,把它的特征值用私钥加密,加密以后附着在数据后面,一起发给对方,在对方收到以后,对方可以验证两方面的内容,第一用户的身份,第二数据的完整性,接收方先用发送方的公钥对其解密如果能解密就验证了对方了身份,此时接收方会获得这段数据的特征值,然后接收方也用相同的算法进行运算,得到一个数据的特征值,如果这两个特征值相同,则说明数据在发送过程完好无损如果不相同,则说明数据有改动假设还是小黑和小白通信,双方都希望在数据的发送过程中,既能实现用户身份验证,又能实现数据加密,还能实现数据的完整性,那该怎么办呢?现在小黑在发送数据前,先将数据用单向加密,计算出特征值,然后再用私钥解密将特征值加密接下来会再用产生一个一次性的密码,用小白的公钥将这个密码加密然后放在数据后,最后再用对称加密将全部加密,这时就是密文了,到了小白那里以后,小白先用自己的私钥拿到那个密码,然后再用那个密码解密,获得数据的特征值,然后再用单向解密计算出一个特征值,如果这两个值相同,则说明数据完好,以上过程就实现了三重验证这三项结合起来是现在电子商务的基础。可以实现这整个过的工具:opsshgpg但是这两个过程还存在问题,小白怎样去获得小黑的公钥呢?在传输公钥的时候也有可能出现欺骗,这怎么解决了?IKE:互联网密钥交换,实现双方使眼色交换密钥,和密钥本身不在互联网上传播PKI:公钥基础设施,或公钥基础架构,CA证书颁发机构,证书内放的就是通信人的公钥信息怎样基于证书通信: 双方在通信时都出示证件,这个证件由某个权威机构发放,只要验证证件内的有效信息 就可以验证对方的身份,但是在发证的时候怎样防止中间出现欺骗呢? 这又是一个鸡生蛋,蛋生鸡的问题,想想该如何解决呢?所以一些操作系统在安装时就已经将一些权威的发证机构的证书放在你的电脑里了,这样在一定程度上可以解决一些问题证书的格式:X509,PKCS证书废弃列表:CRL最常见的攻击“man in the middle”主要是双方身份无法验证会话劫持,数据插入,数据篡改,这些都是常见的威胁加密解密用于:1、用户密码/数据嗅探 password/data sniffing2、数据操纵,data manipulation3、authentication manipulation 认证4、equivalent to mailing on postcards这几个方面加密算法的基本法则:kerckhoff's principle1、一般来讲加密本身并不靠算法,算法固然很关键能将明文变成密文但是一项真正的加密过程,你的数据是否会被破解,主要不能过强依赖于算法本身,而要依赖于密码,算法的研究周期很长,更改一个密码很简单,但是更换一个算法就麻烦了 算法需要耗费很多精力,只要算法不公开,就无从下手破解2、电子商务的过程中不仅要保证数据加密,还要保证不被别人看见算法:1、随机数来源靠得住########openssl#########l用C语言实现了很多种常见的加密算法:三个组件:1、libcrypto 库文件 专门实现加密解密的库文件,2、libssl 库文件,主要是实现https这样协议3、openssl 多用途加密工具,还可以制作一个CA出来一般来讲openssl都会装上,使用一个openssl加一个错误的选项就能看见它的使用选项单项加密时的用法:openssl enc -des3 -salt -a -in inittab -out inittab.des3实现对于一个文件加密 enc是加密 -des3是加密算法 -salt 加入杂质-in后面跟文件名 -out加密后放在哪个文件里openssl enc -d -des3 -salt -a -in inittab.des3 -out inittab -d表示解密openssl dgst -sha inittab 表示计算inittab文件的特征值用户认证时passwd的用法,怎么去帮你生成一个类似于保存在/etc/shadow文件里的密码一样openssl passwd -1 -1表示使用MD5算法[root@server46 ~]# openssl passwd -1Password:Verifying - Password:$1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1openssl passwd -1 -salt 杂质 这样计算结果就一样了[root@server46 ~]# openssl passwd -1Password:Verifying - Password:$1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1[root@server46 ~]# openssl passwd -1 -salt 7HW0kv8yPassword:$1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1man sslpasswd可以查看用法非对称加密:openssl怎样发证:切换目录到/etc/pki/tls/certsmake *.key就可以产生一个密钥make *.cert可以生成一个证书,主要是看文件后缀生成文件,是redhat提供的便捷方式make my.key就可以生成一个密钥(umask 66;openssl genrsa 1024 > my.key)生成私钥文件这是在一个子shell里进行,umask只对后面的这一个命令有效,umask执行完以后就恢复到原来提取公钥:openssl rsa -in my.key -pubout -out myr.pubkey[root@server46 certs]# (umask 66; openssl genrsa 1024 > my.key)Generating RSA private key, 1024 bit long modulus...++++++........++++++e is 65537 (0x10001)[root@server46 certs]# cat my.key-----BEGIN RSA PRIVATE KEY-----MIICXQIBAAKBgQDRSlvZZ7p7sRbczdGhcw/8z5mzEKIjDZw63ffsxCDC9XWKO0vEFaxbPrgwZYF+iu8QHUKVzuJoqO8MmfY7p9aGz2WT2GQ/wUTnjsbL8mNbSclV/2m8K0XZqSLsKzuhaBOFC+sylQvnZiXP23slNWZIuV0EVh9k2ULSV4f8B5QtywIDAQABAoGATNkA4NM1pjVgL7NjReT5+dpAlX+GCVj2BKd8YXOik/ONNTSQnW9X2ikteJfM9KoPHdugl2FfwQ5GuFnQEBeQrUV5SnR09k2OZTsdOMVNXqamf4V/rXidOs+L3RVKQ4X6vpasS1CJ1/q/fCcsi1Nl0nLcV9stLXbmEzYqE6+hwAECQQDqxrbF5W9j5vVMZkKmvx1ViojwTJovlkOtl6RSkqHMR3msnHhizbc+iGrGiP/vH9H+AvDK7AJPNVngkHAa5YGbAkEA5DXX0dIajPoAdLvmNG1kNY1fp6IJjfR8UJRWeOwjhVjul1yp47hPbM/f55OmowdsQamfNVwk4P5iYIcZ8uwfkQJBAJoXToLYsaF6Rumb/IcAzLoGMRa20EQHdegLrVhc0UEIcH2wPPtsVab/VkV0SbaixerX9z7YZDOkqpbPdiTRGZ0CQBWv2DakVMmY6HovcQ0CaEd+i9yOVYIb/cRalG0hY67EaMgRkkOFvGaGyqxjJ67Ogccrq2mSvB51jjvGGv0u20ECQQCHvgJkF3xHkQnahqCTTgym0CNocHhVfyo6KveIfBAkVz69+zsGK2kKBOseSbgRKqVmM21Iqu0aZatjEevHwZIo-----END RSA PRIVATE KEY-----[root@server46 certs]# openssl rsa -in my.key -pubout -out my.pubkeywriting RSA key[root@server46 certs]# cat my.pubkey-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRSlvZZ7p7sRbczdGhcw/8z5mzEKIjDZw63ffsxCDC9XWKO0vEFaxbPrgwZYF+iu8QHUKVzuJoqO8MmfY7p9aGz2WT2GQ/wUTnjsbL8mNbSclV/2m8K0XZqSLsKzuhaBOFC+sylQvnZiXP23slNWZIuV0EVh9k2ULSV4f8B5QtywIDAQAB-----END PUBLIC KEY-----发证步骤:1、首先生成一对密钥(S/P密钥)2、然后把公钥放在一个叫证书颁发请求里(里面包括你的公钥,姓名,地址,等一些列描述信息) 发送到证书颁发机构3、CRT证书就生成了自己成为CA:1、cd /etc/pki/CA 有一个 private 文件,里面专门放CA的私钥文件2、给自己生成一个密钥(umask 66; openssl genrsa 2048 > private/cakey.pem[这里只能叫cakey.pem]) ll private给自己发证书:openssl req -new -x509 -key private/cake.pem -out cacert.pemopenssl req -new -x509 -key private/cake.pem -out cacert.pem 接下来会提示你输入一些信息 写完之后就是一个自签的证书 接下来就可以给别人发证了view plaincopy to clipboardprint?openssl req -new -x509 -key private/cake.pem -out cacert.pem -days3655 openssl req -new -x509 -key private/cake.pem -out cacert.pem -days36553、编辑cA的配置文件view plaincopy to clipboardprint?vim /etc/pki/tls/openssl.cnf这里定义了vim /etc/pki/tls/openssl.cnf这里定义了找到【 CA_default 】字段修改 dir 改为绝对路径这里有些目录没有需要我们手动建立,在这个配置文件内我们都能找到然后还可以修改默认信息到这里才 算是一个完整的CA4、接下来给web服务器做一个证书:view plaincopy to clipboardprint?cd /etc/httpdmkdir sslcd ssl(umask 66;openssl genrsa 2048 > web.key)cd /etc/pki/CAmkdir certs crl newcertstouch index.txt serialecho 01 > serialopenssl req -new -key wed.key -out wed.csr 这是一个证书颁发请求opssl ca -in wed.csr -out web.crt 颁发证书cd /etc/httpdmkdir sslcd ssl(umask 66;openssl genrsa 2048 > web.key)cd /etc/pki/CAmkdir certs crl newcertstouch index.txt serialecho 01 > serialopenssl req -new -key wed.key -out wed.csr 这是一个证书颁发请求opssl ca -in wed.csr -out web.crt 颁发证书然后敲两次回车 就ok了


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:08pm
栏目列表