数据安全基础介绍
从一个故事开始:(跳舞的小人)
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. 对称加密
加密与解密,使用的是相同的密钥,算法可逆。
常见加密算法
- DES:数据加密标准
- 3DES :用3个密钥对数据进行三次加密
- AES:高级加密标准
- 加密方式
- ECB:
电子密码本 - 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