当前位置:   article > 正文

非对称加密

非对称加密

RSA

非对称加密起源于RSA算法,除此之外还有DSA、ECC等。

对极大整数做因数分解的难度决定了 RSA 算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA 算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的 RSA 钥匙才可能被强力方式破解。到2020年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被破解的。
— 维基百科

RSA(Rivest-Shamir-Adleman)是一种公钥密码学算法,是目前广泛使用的非对称加密算法之一,其安全性基于数论中的两个难题:大素数分解问题和欧拉定理。RSA 算法的基本原理如下:

  • 生成公钥和私钥。首先选择两个大素数 p 和 q,计算它们的积 n = p * q,再选择一个整数 e 作为公钥(通常选择为65537),使得 e 和 (p-1)(q-1) 互质。然后计算出一个整数 d 作为私钥,满足 e * d ≡ 1 (mod (p-1)(q-1))。
  • 加密。将明文转换为整数 m,然后用公钥对其进行加密,得到密文 c = m^e mod n。
  • 解密。用私钥对密文进行解密,得到明文 m = c^d mod n。

以下算法都至少包含RSA非对称加密算法。

GPG

GPG用于给文件进行非对称加密。

安装gpg

sudo apt install gpg
  • 1

生成gpg密钥:

gpg --full-generate-key
# 使用默认配置,快速生成 gpg --gen-key

选择密码长度,1024-4096,越长越慢,越长越安全。

选择有效期

y

真实姓名:

邮箱:

o
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

管理gpg密钥:

# 查看gpg秘钥
gpg --list-keys

# 删除秘钥
gpg --delete-secret-keys "<uid>"

# 上传公钥
gpg --send-keys <uid> --keyserver <管理公钥的服务器地址>

# 生成公钥指纹
gpg --fingerprint <uid>

# 导入秘钥
gpg --import <公钥文件> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

加密和解密:

# 加密
gpg --recipient <对方的公钥/uid> --encrypt <要加密的文件>

# 解密
gpg  <要解密的文件>
  • 1
  • 2
  • 3
  • 4
  • 5

SSH

ssh(Secure Shell 的缩写)基于OpenSSH协议,用于安全远程终端通信。

密码登录,以服务器的用户名和密码进行登录:

# 登录远程终端
ssh <用户名>@<主机地址>

# 指定登录端口,默认为22
ssh -p <端口号> <用户名>@<主机地址>
  • 1
  • 2
  • 3
  • 4
  • 5

自动登录,使用密钥登录:

# 生成ssh密钥
ssh-keygen
# ssh-keygen -t rsa

# 查看ssh公钥
cat ~/.ssh/id_rsa.pub

# 拷贝自己的公钥到服务器的 ~/.ssh/authorized_keys
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

参考链接

RSA算法原理(一)
RSA算法原理(二)
RSA加密算法
GPG入门教程

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号