package
0.6.1
Repository: https://github.com/5-say/go-tool.git
Documentation: pkg.go.dev

# README

rsatool

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,使用两个密钥:公钥和私钥。

RSA 加解密原理

密钥生成:

随机生成两个大素数 p 和 q。
计算 n = p * q,并计算欧拉函数 φ(n) = (p - 1) * (q - 1)。
选择一个整数 e,1 < e < φ(n),且 e 与 φ(n) 互质,作为公钥的指数。
计算 d,使得 (d * e) mod φ(n) = 1,作为私钥的指数。
公钥为 (e, n),私钥为 (d, n)。

加密:

将明文消息转换为整数 m,满足 0 <= m < n。
加密操作:c = (m^e) mod n,其中 c 为密文。

解密:

使用私钥进行解密操作:m = (c^d) mod n,其中 m 为明文。

RSA 加解密的安全性基于两个数学难题:

质因数分解问题:在已知一个大数的情况下,找到其所有的质因数。
模反演问题:在已知一个数的情况下,找到其模意义下的乘法逆元。

由于这两个问题的计算复杂性,使得 RSA 算法在当前计算能力下被认为是安全的。
但是,随着计算能力的提升和新的算法的出现,RSA算法的安全性可能会受到威胁。
因此,在实际应用中,需要选择足够大的密钥长度,并定期更新密钥,以保证安全性。

密钥格式区别

PKCS#8密钥格式,多用于JAVA、PHP程序加解密中,为目前用的比较多的密钥、证书格式,也用于微信RSA等程序; PKCS#1密钥格式,多用于JS等其它程序加解密,属于比较老的格式标准。。

RSA PKCS#1公钥格式如: 开头 -----BEGIN RSA PUBLIC KEY----- 结尾 -----END RSA PUBLIC KEY-----

RSA PKCS#1私钥格式如: 开头 -----BEGIN RSA PRIVATE KEY----- 结尾 -----END RSA PRIVATE KEY-----

RSA PKCS#8公钥格式如: 开头 -----BEGIN PUBLIC KEY----- 结尾 -----END PUBLIC KEY-----

RSA PKCS#8私钥格式如: 开头 -----BEGIN PRIVATE KEY----- 结尾 -----END PRIVATE KEY-----

在线工具

# Packages

No description provided by the author
No description provided by the author

# Functions

私钥解密 privateKey *rsa.PrivateKey ciphertext []byte e.g.
公钥加密 publicKey *rsa.PublicKey original []byte e.g.
GenerateKey .
解码 PEM 格式 私钥 pemPrivateKey []byte e.g.
解码 PEM 格式 公钥 pemPublicKey []byte e.g.
将私钥编码为指定 密码学标准 的 PEM 格式 privateKey *rsa.PrivateKey cs rsatool.CryptographyStandards 密码学标准 e.g.
将公钥编码为指定 密码学标准 的 PEM 格式 publicKey *rsa.PublicKey cs rsatool.CryptographyStandards 密码学标准 e.g.
私钥加密 privateKey *rsa.PrivateKey original []byte e.g.
公钥解密 publicKey *rsa.PublicKey ciphertext []byte e.g.
私钥签名 privateKey *rsa.PrivateKey original []byte hashFunc crypto.Hash e.g.
公钥验签 publicKey *rsa.PublicKey original []byte signature []byte hashFunc crypto.Hash e.g.

# Constants

No description provided by the author
No description provided by the author

# Type aliases

密码学标准.