一、加密和解密
1、 加密
数据加密的基本过程,就是对原来为明 的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为 “密文”。通过这样的途径,来达到保护数据不被 非法人窃取、阅读的目的。
2、解密
加密的逆过程为解密,即将该编码信息转化为其原来数据的过程。
二、对称加密和非对称加密
加密算法分对称加密和非对称加密,其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同,此外,还有一类不需要密钥的散列算法。
常见的对称加密 算法主要有 AES 、DES等,常见的非对称算法主要有 RSA、DSA 等,散列算法主要有 SHA-1、MD5 等。
2、对称加密
对称加密算法是应用较早的加密算法,又称为共享密钥加密算法。在对称加密算法中,使用的密钥只有一个,发送和接收双方都使用这个密钥对数据进行加密和解密,这就要求加密和解密方事先都必须知道加密的密钥。
2、非对称加密
非对称加密算法,又称为公开密钥加密算法。它需要两个密钥,一个称为公开密钥 (public key),即公钥,另一个称为私有密钥 (private key),即私钥。
因为 加密和解密使用的是两个不同的密钥,所以这种算法称为非对称加密算法。
如果使用 公钥 对数据 进行加密,只有用对应的 私钥才能进行解密。
使用方法:甲方生成 一对密钥 并将其中的一把作为公钥向其它人公开,得到该公钥的乙方使用该密钥对机密信息进行加密,后再发送给甲方,甲方再使用自己保存的另一把专用密钥 (私钥),对加密后的信息进行解密。
三、常用数据加密算法
1、AES 加密算法
AES 加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为 128、192、256,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,已经被多方分析且广为全世界所使用。
2、DES 加密算法
DES 加密算法是一种 分组密码,以 64 位为 分组对数据 加密,它的 密钥长度 是 56 位,加密解密 用 同一算法。
DES 加密算法是对 密钥 进行保密,而 公开算法,包括加密和解密算法。这样,只有掌握了和发送方 相同密钥 的人才能解读由 DES加密算法加密的密文数据。因此,破译 DES 加密算法实际上就是 搜索密钥的编码。对于 56 位长度的 密钥 来说,如果用 穷举法 来进行搜索的话,其运算次数为 2 ^ 56 次。
3、RSA 加密算法
RSA 加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA 是第一个能同时用于加密和数宇签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被 ISO 推荐为公钥数据加密标准。RSA 加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
4、Base64 加密算法
Base64 加密算法是网络上最常见的用于传输 8bit 字节代码的编码方式之一,Base64 编码可用于在 HTTP 环境下传递较长的标识信息。例如,在 JAVAPERSISTENCE 系统 HIBEMATE 中,采用了 Base64 来将一个较长的唯一标识符编码为一个字符串,用作 HTTP 表单和 HTTPGETURL 中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在 URL(包括隐藏表单域)中的形式。此时,采用 Base64 编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
5、MD5 加密算法
MD5 用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改。严格来说,MD5 不是一种 加密算法 而是 摘要算法。无论是多长的输入,MD5 都会输出长度为 128bits 的一个串 (通常用 16 进制 表示为 32 个字符)。
6、SHA1 加密算法
SHA1 是和 MD5 一样流行的 消息摘要算法,然而 SHA1 比 MD5 的 安全性更强。对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个 160 位的 消息摘要。基于 MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。
四、数据加密格式
数据加密格式常见的有:
.pem .pfx .cer .key
等,这里着重介绍一下
.pem
格式文件
.pem
文件一种可阅读格式的文本文件,文件内容可能代表证书、秘钥等。
由于许多密码学相关的标准都是由 ASN.1 定义数据结构,然后用 Distinguished Encoding Rules (DER) 去序列化这些结构,序列的结果为二进制文件,比如证书、密钥等。纯二进制文件不易在网络中传输,在很多情况下也不套容易展示出来。一般我们通过Base64 或者HEX来编码二进制文件。PEM就使用了Base64编码了二进制文件。
PEM是把二进制数据通过Base64进行编码,然后再头部添加header
-----BEGIN XXX-----
尾部添加footer
-----END XXX-----
。 header 和footer之间的数据就是被Base64编码的二进制数据。XXX 是要编码的数据内容类型,可以是
CERTIFICATE 、CERTIFICATE REQUEST、 PRIVATE KEY 、X509 CRL
。我们可以通过header和footer就可以推断出编码的数据内容类型。如:RSA秘钥
RSA公钥文件:
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAMcqPqejzpXzdAsnvv+/8FX9jkI7c1F9GqTnBBxfSPGqJhi/eQ5OyS98
TQ8sHy28XmNUPzEzA5HZ4i6tX9dfxXLv4mAykGZBmh+S1vv3Ztv53ECnYqL9hO1W
G1c6JLnV2CfJjaoVIfzbOpCQ7DIKFCCiAOYzVs2LYOiO8S2kXmozAgMBAAE=
-----END RSA PUBLIC KEY-----
RSA私钥文件:
-----BEGIN RSA PRIVATE KEY-----
MIICYAIBAAKBgQDHKj6no86V83QLJ77/v/BV/Y5CO3NRfRqk5wQcX0jxqiYYv3kO
TskvfE0PLB8tvF5jVD8xMwOR2eIurV/XX8Vy7+JgMpBmQZofktb792bb+dxAp2Ki
/YTtVhtXOiS51dgnyY2qFSH82zqQkOwyChQgogDmM1bNi2DojvEtpF5qMwIDAQAB
AoGAYonjL/wa1RP7wR0sIcssNM9bmCdj2diE2zu1S/hU1cRyTuJFGbAfWBAu7CfP
UUiWhpyDG2t7A6mCf8elYs3+a4oRFz1gri4CkbkWTRe14qocn7KPI5z0Vd2I7qoF
z7nsYs08bhcVSgPUfvPMBPEsfp3+e4DBWhMDdR7hL+R0XiECRQDuJATh2iDQ5s+0
j6TsMKBe/6EJB4SMeajxYKDhaQI0mveuTvAZgglW/ZTC6y0dkWtEjquix0/ocya1
WYiV6zf0KoucgwI9ANYZ8e8jrM5zfJfI0zm+RmouMo0xjCvOQTA8lONME994r0MA
2NQyAsW+aOH5z+HTntD1mmt8udPXQVbskQJEFN5FK0GBJK1FQE5iJmxwcUK3auIk
xGaY3mYYUwhvsApwb+7s7V9O0DeyhI41SuUGYGCcO8x5fSYyGyw4YuLU6WmdCF8C
PEInfiPgKBMaiBL2UJ309xjz8VbDSoZ2kpnu/ipFZZaVWcIgTt8yHL0xGoNIhz1G
ADqcyPwRa/HS/zN2oQJFAIKy9Pw5sY+cwpFyLqMIliQdVLw00HlnGtYy+5rVkkL6
xOlCHf2glAsX5TT8esu4MoTk3NIJt4uLsjUfluOI5UIJ3D5K
-----END RSA PRIVATE KEY-----
版权归原作者 Hi~晴天大圣 所有, 如有侵权,请联系我们删除。