Documentation ¶
Overview ¶
Package moooncrypto Wrote by yijian on 2024/01/25
Package moooncrypto Wrote by yijian on 2024/01/25
Package moooncrypto Wrote by yijian on 2024/01/25
Package moooncrypto Wrote by yijian on 2024/01/25
Package moooncrypto Wrote by yijian on 2024/05/09
Package moooncrypto Wrote by yijian on 2024/08/22
Package moooncrypto Wrote by yijian on 2024/08/22
Package moooncrypto Wrote by yijian on 2024/01/02
Package moooncrypto Wrote by yijian on 2024/01/02
Package moooncrypto Wrote by yijian on 2024/01/02
Index ¶
- Constants
- func AesCBCDecryptText(key, data string) (string, error)
- func AesCBCEncryptText(key, data string) (string, error)
- func AesCFBDecryptText(key, data string) (string, error)
- func AesCFBEncryptText(key, data string) (string, error)
- func AesOFBDecryptText(key, data string) (string, error)
- func AesOFBEncryptText(key, data string) (string, error)
- func ExtractCertAndKeyFromP12(p12Data []byte, password string) (string, string, error)
- func File2PrivateKey(file *os.File) (*rsa.PrivateKey, error)
- func Filepath2PrivateKey(filepath string) (*rsa.PrivateKey, error)
- func GenerateCertPemStringFromPrivateKey(privateKey *rsa.PrivateKey, ct *CertTemplate) (string, error)
- func GenerateCertPemStringFromPrivateKeyFile(privateKeyFile *os.File, ct *CertTemplate) (string, error)
- func GenerateCertPemStringFromPrivateKeyFilepath(privateKeyFilepath string, ct *CertTemplate) (string, error)
- func GenerateCertPemStringFromPrivateKeyString(privateKeyString string, ct *CertTemplate) (string, error)
- func GeneratePrivateKeyFile(keyType KeyType, keySize keySize, filepath string) error
- func GeneratePrivateKeyString(keyType KeyType, keySize keySize) (string, error)
- func HmacSha256Sign(data, key string, toUpper bool) (string, error)
- func IsEcPemPrivateKey(s string) bool
- func IsOpenSslPemPrivateKey(s string) bool
- func IsP1PemPrivateKey(s string) bool
- func IsP7PemCertificate(s string) bool
- func IsP8PemPrivateKey(s string) bool
- func IsPemCertificate(s string) bool
- func Md5Sum(data string, toUpper bool) string
- func RsaSha256SignWithPrivateKey(privateKey *rsa.PrivateKey, data []byte) (string, error)
- func RsaSha256SignWithPrivateKeyStr(privateKeyStr []byte, data []byte) (string, error)
- func String2PrivateKey(str string) (*rsa.PrivateKey, error)
- type CertInfo
- type CertSubject
- type CertTemplate
- type KeyType
Constants ¶
const ( RSAKey1024 keySize = 1024 RSAKey2048 = 2048 RSAKey3072 = 3072 RSAKey4096 = 4096 )
私钥长度, 可取值 1024/2048/3072/4096, 其中 1024 因安全性低不推荐使用, 而 4086 因性能过低也不推荐使用
Variables ¶
This section is empty.
Functions ¶
func AesCBCDecryptText ¶
AesCBCDecryptText 解密文本 key 解密密钥,值同加密密钥,长度不能超过 32 个字符,否则返回 error。如果不是 16、24 和 32 整的倍数,则会自动补 0 填充到最近的长度。
func AesCBCEncryptText ¶
AesCBCEncryptText 加密文本 key 加密密钥,长度不能超过 32 个字符,否则返回 error。如果不是 16、24 和 32 整的倍数,则会自动补 0 填充到最近的长度。
func AesCFBDecryptText ¶
AesCFBDecryptText 解密文本 key 解密密钥,值同加密密钥,长度不能超过 32 个字符,否则返回 error。如果不是 16、24 和 32 整的倍数,则会自动补 0 填充到最近的长度。
func AesCFBEncryptText ¶
AesCFBEncryptText 加密文本 key 加密密钥,长度不能超过 32 个字符,否则返回 error。如果不是 16、24 和 32 整的倍数,则会自动补 0 填充到最近的长度。
func AesOFBDecryptText ¶
AesOFBDecryptText 解密文本 key 解密密钥,值同加密密钥,长度不能超过 32 个字符,否则返回 error。如果不是 16、24 和 32 整的倍数,则会自动补 0 填充到最近的长度。
func AesOFBEncryptText ¶
AesOFBEncryptText 加密文本 key 加密密钥,长度不能超过 32 个字符,否则返回 error。如果不是 16、24 和 32 整的倍数,则会自动补 0 填充到最近的长度。
func ExtractCertAndKeyFromP12 ¶
ExtractCertAndKeyFromP12 P12 文件是一种用于存储和传输用户或服务器私钥、公钥和证书的二进制格式文件,也称为 PFX 文件。 它遵循 Public Key Cryptography Standards #12(PKCS#12)标准,该标准为这些密钥和证书提供了一个可移植的格式。 P12 文件通常包含开发者的公钥和私钥,以及一个证书链,用于验证开发者的身份。
PEM(Privacy-Enhanced Mail)证书是一种使用 Base64 ASCII 编码的纯文本格式,通常具有 .crt 或 .pem 扩展名。 PEM 证书包含证书主体的公开信息、公钥信息以及签署证书的证书颁发机构(CA)的信息。 PEM 证书主要用于存储和传输证书,例如在 HTTPS 服务器上使用的 SSL/TLS 证书。
可从 P12 文件提取出证书和私钥,也可将证书和私钥打包为 P12 文件: 1)openssl genrsa -out private_key.pem 2048 # 生成一个 PKCS#1 格式的 2048 位 RSA 私钥 2)openssl pkcs8 -topk8 -inform PEM -outform PEM -in private_key.pem -out private_key_pkcs8.pem -nocrypt # 将 PKCS#1 格式的私钥转换为 PKCS#8 格式 3)openssl req -new -key private_key.pem -out cert_request.csr # 生成证书签名请求(CSR) 4)openssl x509 -req -days 365 -in cert_request.csr -signkey private_key.pem -out self_signed_cert.pem # 生成自签名证书 5)openssl pkcs12 -export -in self_signed_cert.pem -inkey private_key.pem -out certificate.p12 # 生成 P12 文件
返回值分别为:PEM 证书、PEM 私钥和 error 参数 password 为解密 P12 数据 p12Data 的密码
func File2PrivateKey ¶ added in v0.0.14
func File2PrivateKey(file *os.File) (*rsa.PrivateKey, error)
func Filepath2PrivateKey ¶ added in v0.0.14
func Filepath2PrivateKey(filepath string) (*rsa.PrivateKey, error)
func GenerateCertPemStringFromPrivateKey ¶ added in v0.0.14
func GenerateCertPemStringFromPrivateKey(privateKey *rsa.PrivateKey, ct *CertTemplate) (string, error)
GenerateCertPemStringFromPrivateKey 从私钥生成证书 PEM 字符串
func GenerateCertPemStringFromPrivateKeyFile ¶ added in v0.0.14
func GenerateCertPemStringFromPrivateKeyFile(privateKeyFile *os.File, ct *CertTemplate) (string, error)
GenerateCertPemStringFromPrivateKeyFile 从私钥文件生成证书 PEM 字符串
func GenerateCertPemStringFromPrivateKeyFilepath ¶ added in v0.0.14
func GenerateCertPemStringFromPrivateKeyFilepath(privateKeyFilepath string, ct *CertTemplate) (string, error)
GenerateCertPemStringFromPrivateKeyFilepath 从私钥文件生成证书 PEM 字符串
func GenerateCertPemStringFromPrivateKeyString ¶ added in v0.0.14
func GenerateCertPemStringFromPrivateKeyString(privateKeyString string, ct *CertTemplate) (string, error)
GenerateCertPemStringFromPrivateKeyString 从私钥字符串生成证书 PEM 字符串
func GeneratePrivateKeyFile ¶ added in v0.0.14
func GeneratePrivateKeyString ¶ added in v0.0.14
GeneratePrivateKeyString 生成私钥字符串 keyType: 私钥类型 keySize: 私钥长度,可取值 1024/2048/3072/4096,其中 1024 因安全性低不推荐使用,而 4086 因性能过低也不推荐使用 错误“too few primes of given length to generate an RSA key”表示 keySize 参数太小,导致无法生成有效的 RSA 密钥, RSA 密钥生成需要至少两个大素数,这些素数的位数之和应等于 keySize,当 keySize 太小时可能无法找到足够的大素数来生成有效的密钥。
func HmacSha256Sign ¶
HmacSha256Sign SHA256 签名 data 需要签名的数据 key 签名密钥 toUpper 为 true 返回大写的签名字符串,为 false 返回小写的签名字符串
func IsEcPemPrivateKey ¶
IsEcPemPrivateKey 判断字符串是否为 ECDSA 格式的 PEM 格式的私钥
func IsOpenSslPemPrivateKey ¶
IsOpenSslPemPrivateKey 判断字符串是否为 OpenSSL 格式的 PEM 格式的私钥
func IsP1PemPrivateKey ¶
IsP1PemPrivateKey 判断字符串是否为 PKCS#1 格式的 PEM 格式的私钥
func IsP7PemCertificate ¶
IsP7PemCertificate 判断字符串是否为 PKCS#7 格式的 PEM 格式的证书
func IsP8PemPrivateKey ¶
IsP8PemPrivateKey 判断字符串是否为 PKCS#8 格式的 PEM 格式的私钥
func IsPemCertificate ¶
IsPemCertificate 判断字符串是否为 PEM 格式的 X.509 证书
func RsaSha256SignWithPrivateKey ¶
func RsaSha256SignWithPrivateKey(privateKey *rsa.PrivateKey, data []byte) (string, error)
func String2PrivateKey ¶ added in v0.0.14
func String2PrivateKey(str string) (*rsa.PrivateKey, error)
Types ¶
type CertInfo ¶
type CertInfo struct { Ver int `json:"ver"` // 证书版本 No10 string `json:"cert_no_10"` // 证书序列号(十进制) No16 string `json:"cert_no_16"` // 证书序列号(十六进制) Subject string `json:"subject"` // 证书主题 StartTime time.Time `json:"start_time"` // 证书开始时间 StopTime time.Time `json:"stop_time"` // 证书结束时间 Issuer string `json:"issuer"` // 证书颁发者 PublicKeyAlgorithm string `json:"public_key_algorithm"` // 公钥算法 SignatureAlgorithm string `json:"signature_algorithm"` // 签名算法 PublicKey string `json:"public_key"` // 公钥 Signature string `json:"signature"` // 签名 KeyUsage int `json:"key_usage"` // 密钥用途 SubjectKeyId string `json:"subject_key_id"` // 主题密钥标识 AuthorityKeyId string `json:"authority_key_id"` // 颁发者密钥标识 }
func GetCertInfo ¶
type CertSubject ¶ added in v0.0.14
type CertSubject struct { Organization []string // 示例:"Example Corp." CommonName string // 示例:"example.com" }
CertSubject 证书主题
type CertTemplate ¶ added in v0.0.14
type CertTemplate struct { SerialNumber *big.Int // 证书的唯一标识符,通常是一个大整数,如:big.NewInt(1234567890) Subject CertSubject // 证书主题 NotBefore time.Time // time.Now() NotAfter time.Time // time.Now().Add(time.Hour * 24 * 365) KeyUsage x509.KeyUsage // x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign BasicConstraintsValid bool // 是否启用基本约束 IsCA bool // 是否为 CA 证书 // 在生成 PEM 格式的证书时,Type 字段通常设置为 CERTIFICATE。 // 这是因为 X.509 证书是用于公钥加密的最常见和广泛使用的证书格式。 // 在大多数情况下,您应该使用 CERTIFICATE 类型来表示 PEM 编码的 X.509 证书。 Type string // 证书类型,如:"CERTIFICATE" }
CertTemplate 证书模板