ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

编码、哈希(摘要)、对称加密算法、非对称加密算法、签名、数字证书等的浅析

2021-02-04 16:00:28  阅读:162  来源: 互联网

标签:编码 公钥 加密 摘要 加密算法 key 私钥 浅析 数字证书


Base64和URL编码

Base64
Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据,由大小写字母、数字、+和/ 64个字符组成。将二进制文件3个字节作为一个处理单元,分为4个字节,每个字节6位,即3个字节可由4个可打印字符来表示。编码时肯定会出现数据不是3的倍数,Base64编码会采用0补全,最后末尾添加n个 “=”表示 补了几个字节的0。常见于URL中二进制图片的传递。
URL编码
由于url只能使用英文字母、数字和某些标点符号,不能使用其他文字和符号,比如中文。例如:春的UTF-8编码分别是E6 98 A5,每个字节前面加一个%因此,最后春 url编码得到"%E6%98%A5;当然如果浏览器采用其他编码形式结果又会不同。如:GB2312编码是B4 BA,最后得到%b4%ba

摘要(哈希):

摘要的目的是为了校验信息的完整性,保证信息在传输过程中不被篡改。例如你在网络上需要下载一个非官方论坛软件,但又担心软件被第三方篡改,可以将该软件的md5值和官方下载的md5值进行对比,如果一致,则可放心使用。摘要算法有如下几个特点:
  输入相同时,输出一致;输入不同时,输出不同。通过输出,不能计算出输入 对输入的任何细微修改,都会导致完全不同的输出。
  由于以上特性,摘要也常被用来给密码加密,不过由于计算机运算能力的提升以及越来越丰富的破解手段,已不建议使用摘要算法来给密码加密。
  通过摘要信息不能还原原始信息,仅用来验证完整性。

对称加密和非对称加密

加密是为了保证数据安全传输,使得其他人不能获取的具体信息内容。例如你想给某人发送一封密信,或通过互联网给人发送密码,这些对隐秘性要求比较强的事情,就需要对信息进行加密。
  加密的专注点不在可用性上,这点和编码有明显的区别。加密是可逆的,明文 + 秘钥 = 加密信息
  加密又分为对称加密和非对称加密,区别在于在加密和解密信息时秘钥是不是同一个。
  加密信息能通过密钥被还原为原始信息
1、对称加密:DES, AES
对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
不足之处是,交易双方都使用同样钥匙,安全性得不到保证。
常见的对称加密有DES,3DES,AES,Blowfish,Twofish,IDEA,RC6,CAST5 等。
2、非对称加密: RSA。
密钥是成对出现。使用一对“私钥-公钥”,用私钥加密的内容只有对应公钥才能解开
常见的非对称加密有 RSA、ESA、ECC 等。
 公钥:公开给所有人。不能通过公钥反推出私钥;public key
 私钥:自己留存,不公开。有且只有一个对应的私钥;secret key
 特点:通过私钥加密的密文只能通过公钥能解密,通过公钥加密的密文也只能通过私钥能解密。
但由于算法强度比对称加密复杂,加解密的速度比对称加解密的速度要慢。

来查看本机系统中ssh中的密钥都长啥样呢。pub结尾的就是公钥,key结尾的就是私钥
#ls /etc/ssh/ 
ssh_host_dsa_key.pub  ssh_host_key.pub  ssh_host_rsa_key.pub 
ssh_config  ssh_host_dsa_key  ssh_host_key          ssh_host_rsa_key 
查看系统中密码加密算法 
#authconfig --test|grep password 
shadow passwords are enabled 
password hashing algorithm is sha512

数字签名和数字证书

数字签名
简单说就是对数据进行信息摘要后再用私钥加密而成。可用RSA的私钥进行签名,用RSA的公钥进行验签。
数字证书
用户为了确认服务器的公钥,服务器把自己的公钥给到证书机构(certificate authority,简称CA),CA将服务器的公钥和其他信息 使用Hash信息摘要以后再用CA自己的私钥加密生成 数字证书 发给服务器。服务器再把这个数字证书给到用户(浏览器)。CA的公钥怎么确认?一般比较著名的机构的公钥都在"受信任的根证书颁发机构"列表中,浏览器自动会在里面查询获得。

一般使用流程:

编码目的:压缩空间,便于传输,减少带宽。
摘要目的:数据完整性,是否在传输过程中被修改。
加密目的:传输过程中既是被截取也无法查看原文,因为没有秘钥。
数字签名:是对摘要后的数据进行加密
数字证书:自己服务器公钥给权威机构(CA),权威机构对服务器的公钥和其他信息进行hash摘要再用权威机构的公钥进行加密后给客户服务器,客户把这个公钥给浏览器。
1、数据第一步编码(base64等)
2、第二步进行摘要(md5,sha256)
3、第三步对摘要后的数据进行加密(对称和非对称加密)
其实每一步都可以摘要:如数据本身摘要(md5)一次,然后编码(base64),然后对编码的数据在摘要(md5),然后对摘要的数据加密,然后对加密的后数据在摘要。

标签:编码,公钥,加密,摘要,加密算法,key,私钥,浅析,数字证书
来源: https://blog.csdn.net/u013921164/article/details/113644958

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有