最近女友突然问我什么是加密:
我当然毫无求生欲的先偷懒贴一波百度的加密:
然后我就被打了,原因:你敷衍我。。。。
简单来说就是通过加密算法将明文(谁拿到内容,都能看懂的),变为密文(别人都看不懂,只有某些人才能看懂的内容)。
加密的方法根据密钥的不同分为两种体系。
对称加密和非对称加密。
对称加密:就是加密和解密用同一种密钥。比如我们都了解的阿特巴希加密法,26个英文字母正序和倒叙排列就是对应的关系。
在阿特巴希密码中“nlmvb”代表“MONEY”。
制作密文是用阿特巴希加密法制作,读取也就是解密是也用阿特巴希加密法解密。
比如我想对女友说I Love You 。我要先用加密码改造成密文,也就是R OLEV BLF 而而她想看懂也要用相同的加密发。
这就是对称加密。
优点:效率高,加密速度快,可以加密大量的数据,几G到几十G;
缺点:密钥的传递问题,特别是多个人同时通信。
我用的密钥怎么远程传递给女友呢?
多人同时通信的问题,如果我在群聊里说了一句密文,只想让女友知道,但是所有知道我加密法的人都能知道我的意思。也就造成的安全隐患。
非对称加密:
加密和解密使用不同的密钥。
通过公钥和私钥实现的,就是我发布了两个规则,一个规则用来加密叫做公钥,一个规则用来解密叫做私钥。比如一段信息:6666 用公钥加密后是rueidgfsnj,然后用私钥解密后是6666。
公钥就随便传播,反正私钥在我手上只有我能读。
进一步解释就是收文件的一方发送公钥给别人。
优点:解决了密钥传递的问题
缺点:效率低,加密速度慢,比对称加密速度慢1000倍,只能加密少量数据
对称加密+非对称加密:
将一段信息先进行对称加密,因为速度快,能加密大文件。然后将对称加密的密钥进行非对称加密,最后传输的是2个文件,1、被加密的数据文件。2、被加密的密钥文件。
解密时,先用私钥解密密钥文件,获得对称加密的密钥,然后用这个密钥解密数据文件。
加密算法:
就是具体的数据加密过程了。
SSL
SSL:Secure Sockets
Layer 安全套接层,为Netscape(美国网景公司)所研发;
TLS:Transport Layer Security(传输层安全)是SSL的继任者,为网络通信提供安全及数据完整性的一种安全协议。
SSL的功能:
TLS与SSL在传输层对网络连接进行加密,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。
已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
目前一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
HTTPS
具体操作:
[root@secret ~]# useradd username1 [root@secret ~]# echo 000000 | grep username1 --stdin
讯享网
讯享网[root@secret2 ~]# useradd username2 [root@secret2 ~]# echo 000000 | passwd username2 --stdin
用这两个用户登录。
【1】GPG
1、对称加密:
[username1@secret ~]$ echo "hi username2" > file.txt [username1@secret ~]$ gpg -c file.txt
然后弹出这个。

输入密码:英文字母,数字,字符,8位以上。
我的是:abc123_# 只要记住就好了。

讯享网[username1@secret ~]$ ls file.txt file.txt.gpg
然后就很能看到加密后的文件了。
确实无法看懂…

[username1@secret ~]$ scp file.txt.gpg username2@172.16.12.96:/home/username2 把密文发过去。
secret2解密。
讯享网 gpg -d file.txt.gpg gpg: directory `/home/username2/.gnupg' created gpg: new configuration file `/home/username2/.gnupg/gpg.conf' created gpg: WARNING: options in `/home/username2/.gnupg/gpg.conf' are not yet active during this run gpg: keyring `/home/username2/.gnupg/secring.gpg' created gpg: keyring `/home/username2/.gnupg/pubring.gpg' created gpg: CAST5 encrypted data gpg: encrypted with 1 passphrase hi username2 >>>>>>>这个就是解密后的内容 gpg: WARNING: message was not integrity protected
需要输入在1上设置的密码。abc123_#。就可以解码了。
[username2@secret2 ~]$ gpg -d file.txt.gpg > file1 直接存到硬盘上。
2、非对称加密
这个最好直接连虚拟而不是远程,因为会根据鼠标键盘的移动轨迹记录随机数。远程工具没有鼠标,很慢。
讯享网[username1@secret ~]$ gpg --gen-key Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 加密算法 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 密钥长度 Requested keysize is 2048 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 0 密钥的有效期 Key does not expire at all Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key. Real name: user2-node2 唯一标识 Email address: xxx@126.com 邮箱 Comment: user2's key 描述,可以不写 Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O 确认

看上边的,动鼠标和键盘记录随机数。

完成状态。

这几个就是生成的文件了。
在家目录的.gnupg/下。
查看公钥,私钥:
[username1@secret ~]$ gpg --list-key //公钥 /home/username1/.gnupg/pubring.gpg ---------------------------------- pub 2048R/A 2019-12-13 uid username-12.95 (username1's key) <username1@163.com> sub 2048R/72FC8115 2019-12-13
讯享网[username1@secret ~]$ gpg --list-secret-key //私钥 /home/username1/.gnupg/secring.gpg ---------------------------------- sec 2048R/A 2019-12-13 uid username-12.95 (username1's key) <username1@163.com> ssb 2048R/72FC8115 2019-12-13
username1给username2发送文件:
user2导出公钥:
[username2@secret2 ~]$ gpg --export username2-12.96 //乱数形式 后边的是公钥的real-name,上边说的唯一标识。 [username2@secret2 ~]$ gpg --export --armor username2-12.96 //二进制形式

乱数形式的
讯享网[username2@secret2 ~]$ gpg --export --armor username2-12.96 -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.22 (GNU/Linux) mQENBF3z3d4BCADKfMNGyidxEChZEuFXErnARnoDeZJluGXkyC/mXSBVzNGnS7mI e4xQUclVNEdPUYYFDRgW2vE6ggReA1O7giwZX+Fw1ePFYaLtG0mD/zUTzWUP+K5S /69gX9R87lrLQCB4EilSwF0quLgY9K0MeNkF1655KtEsFxs68jjAGu4VvVRP3xmN 40wNKCXXVwGoW/gUDcVoQPcrCgmfAAkiS46lv5J0X0a8WzB9G+FagPNJvjUGDynC
二进制形式的。
[username2@secret2 ~]$ gpg --export --armor username2-12.96 > username2.pub 制作公钥文件
用scp发给username1
username1导入2 的公钥
讯享网[username1@secret ~]$ gpg --import username2.pub 查看公钥发现有2个 [username1@secret ~]$ gpg --list-key /home/username1/.gnupg/pubring.gpg ---------------------------------- pub 2048R/A 2019-12-13 uid username-12.95 (username1's key) <> sub 2048R/72FC8115 2019-12-13 pub 2048R/2BB8ED53 2019-12-13 uid username2-12.96 (username2's key) <username2@163.com> sub 2048R/1E4DA576 2019-12-13
username1用2 的公钥加密。
[username1@secret ~]$ cp /etc/passwd ./userlist.txt 做一个数据文件。 [username1@secret ~]$ gpg --encrypt --recipient username2-12.96 --armor userlist.txt 加密
此时u2发过来的那个公钥文件基本没啥用了,因为已经导入了公钥。
讯享网[username1@secret ~]$ ls file.txt file.txt.gpg userlist.txt userlist.txt.asc username2.pub
已经能看到userlist.txt.asc这个加密后的文件。
再把这个加密后的文件发给u2
user2解密:
[user2@secret2 ~]$ gpg --decrypt --armor userlist.txt.asc 输入自己的私钥密码 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 就能看到文件内容了
讯享网[user1@secret ~]$ gpg --fingerprint username2-12.96 查看u2的公钥的指纹信息 [user1@secret ~]$ gpg --sign-key username2-12.96 对u2的公钥进行签名操作 输入自己的私钥密码 Really sign? (y/N) y
现在在用公钥进行加密就不回提示是危险的公钥。
【2】openssl
[username1@secret ~]$ openssl OpenSSL> ? openssl:Error: '?' is an invalid command. Standard commands asn1parse ca ciphers cms crl crl2pkcs7 dgst dh
讯享网Standard commands //命令 Message Digest commands (see the `dgst' command for more details //用于签名的加密算法 Cipher commands (see the `enc' command for more details) //用于加密的加密算法
1、对称加密:
user1
[username1@secret ~]$ openssl enc -e -bf -in userlist.txt -out userlist.txt.ssl enter bf-cbc encryption password: //设置对称加密的密码 Verifying - enter bf-cbc encryption password: enc 加密操作 -e 加密 -bf 加密算法 -in 准备加密的文件 -out 加密后生成的文件 [username1@secret ~]$ scp userlist.txt.ssl username2@172.16.12.96:/home/username2 发给u2
user2
讯享网[username2@secret2 ~]$ openssl enc -d -bf -in userlist.txt.ssl -out userlist.txt enter bf-cbc decryption password://输入user1 那边设置的密码 然后生成文件userlist.txt [username2@secret2 ~]$ cat userlist.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin ok
2、非对称加密
生成公钥和私钥:
私钥可以设置密码,也可以不设置密码。
[user2@node2 ~]$ openssl genrsa 1024 > user2.pri 创建私钥,无密码 user2.pri私钥文件
讯享网[user2@node2 ~]$ openssl genrsa -des3 1024 > user2.pas Generating RSA private key, 1024 bit long modulus ......................................................++++++ .........++++++ e is 65537 (0x10001) Enter pass phrase: Verifying - Enter pass phrase: 创建私钥,有密码
从私钥中提取公钥
[username2@secret2 ~]$ openssl rsa -in user2.pri -pubout -out user2.pub writing RSA key user2.pub这个是公钥文件
讯享网[user2@node2 ~]$ openssl rsa -in user2.pas -pubout -out user2.pub1 Enter pass phrase for user2.pas:输入私钥密码 writing RSA key 带密码私钥提取公钥
[username2@secret2 ~]$ scp user2.pub username1@172.16.12.95:/home/username1 公钥发给u1
讯享网[username1@secret ~]$ openssl rsautl -in userlist.txt -out userlist-txt.sec -pubin -inkey user2.pub -encrypt RSA operation error 8336:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:rsa_pk1.c:153: 可以看到报错,因为文件太大了。 [username1@secret ~]$ ls -lh userlist.txt -rw-r--r-- 1 username1 username1 1.8K Dec 14 03:01 userlist.txt 这都算大。。。。。。
user1重新加密
[username1@secret ~]$ echo "" > key [username1@secret ~]$ openssl rsautl -in key -out key.sec -pubin -inkey user2.pub -encrypt [username1@secret ~]$ scp key.sec username2@172.16.12.96:/home/username2 发给user2
user2 解密
讯享网[username1@secret ~]$ openssl rsautl -in key.sec -out key -inkey user2.pri -decrypt [username1@secret ~]$ cat key
3、对称加密+非对称加密
user1给user2发送大文件,并加密。
首先、用对称加密加密大的数据文件。
其次、用非对称加密法加密对称加密的加密算法和密码,生成密钥密码文件。
最后、user2 用私钥解密密钥密码文件,获得对称加密的算法和密码,用得到的算法和密码解密数据文件。
user1:
[username1@secret ~]$ openssl enc -e -bf -in userlist.txt -out userlist.txt.ssl 对称加密大文件。并设置密码。 [username1@secret ~]$ echo "-bf,123" > key 制作密钥文件,里边写了对称加密的算法和密码。 [username1@secret ~]$ openssl rsautl -in key -out key.sec -pubin -inkey user2.pub -encrypt 非对称加密加密这个密钥文件。、 [username1@secret ~]$ scp key.sec username2@172.16.12.96:/home/username2 [username1@secret ~]$ scp userlist.txt.ssl username2@172.16.12.96:/home/username2 两个文件都发给user2
user2解密
讯享网[username2@secret2 ~]$ openssl rsautl -in key.sec -out key -inkey user2.pri -decrypt 解密密钥文件 [username2@secret2 ~]$ cat key -bf,123 获得对称加密的算法和密码 [username2@secret2 ~]$ openssl enc -d -bf -in userlist.txt.ssl -out userlist.txt enter bf-cbc decryption password: 输入密码 用bf算法 [username2@secret2 ~]$ [username2@secret2 ~]$ ls key.sec user2.pub userlist.txt.asc username2.pub key user2.pri userlist.txt--->这个就是解密后的大文件,
到此,加密就基本说完了。我女友是懂了,非常开心的打了我,说又知道了对她来说没啥用的东西。
我直接吓醒了,然后长出了一口气,幸好我没有女朋友。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/21257.html