数据安全基础(内部分享)

数据安全基础介绍

从一个故事开始:(跳舞的小人)


1. Base64 :

  • 网络上最常见的编码方式之一。
  • 能够对任何二进制数据进行编码(二进制数据编码为字符串)。
  • 通过url 传递数据。

    编码的规则:

①.把3个字符变成4个字符。

②每76个字符加一个换行符。

③.最后的结束符也要处理。

  • 索引表:

  • 例子:

    对齐转换

    补位示例

2. 散列函数(哈希函数)

2.1 对任意长度的数据,生成“固定长度”的记录(数据摘要,“指纹”)。算法不可逆。

  • MD5 (http://www.cmd5.com) : 32位

    命令行工具:

    ➜ md5 -s “abc”

  • SHA1 : 40位

    命令行工具:

    ➜ echo -n “abc” | openssl sha1 -sha1

  • SHA256 :64位

    命令行工具:

    ➜ echo -n “abc” | openssl sha1 -sha256

    2. 2 其他用途

  • 搜索

  • 版权

3. 对称加密

  • 加密与解密,使用的是相同的密钥,算法可逆。

  • 常见加密算法

  1. DES:数据加密标准
  2. 3DES :用3个密钥对数据进行三次加密
  3. AES:高级加密标准
  • 加密方式
  1. ECB:​电子密码本
  2. CBC:密码块链
  • 命令行

    ** DES(ECB)加密**

echo -n abc | openssl enc -des-ecb -K 616263 | base64

** **DES(CBC)加密

echo -n abc | openssl enc -des-cbc -iv 0102030405060708 -K 616263 | base64

** **AES(ECB)加密

echo -n abc | openssl enc -aes-128-ecb -K 616263 | base64

** AES(CBC)加密**

➜ echo -n abc | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 | base64

** **DES(ECB)解密

echo -n tO3bKkWJ8t4= | base64 -D | openssl enc -des-cbc -iv 0102030405060708 -K 616263 -d

** **DES(CBC)解密

**echo -n tO3bKkWJ8t4= | base64 -D | opencbc -iv 0102030405060708 -K 616263 -nosalt -d**

** **AES(ECB)解密

echo -n skiV9Z6w/i63DVkJ6VXFaQ== | base64 -D | openssl enc -aes-128-ecb -K 616263 -d

**AES(CBC)解密**

echo -n T3GT4X1neBjaO27J8LtSng== | base64 -D | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -d

4. 非对称加密(RSA)

  • 加密和解密使用不同的密钥
  • 使用公钥加密,需要使用私钥解密
  • 使用私钥加密,需要使用公钥解密

生成一个密钥文件

➜ openssl genrsa -out privateKey.pem 1024

提取公钥

➜ openssl rsa -in privateKey.pem -pubout -out pubKey.pem

用公钥加密

➜ echo -n abc |openssl rsautl -encrypt -inkey pubKey.pem -pubin | base64

用私钥解密

➜ echo -n oqsTWl2c4DR8rh9SPdoQtleSPO34YBG8Ai/cToJ6UGc8rCmI2CkhX9YaBIcSGL1tw6WoHy4vpkp3BXqJbS+6OF6FNsfxh/3yGi+GPEQ9V+tPIbmAemhCuxhOoyu2wK2L5r9nJk0U007hol0JWgqhvuPHsMrmTpui7Zu/YbBbTbY= | base64 -D | openssl rsautl -decrypt -inkey privateKey.pem