GEncroX

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 14, 2023 License: MIT Imports: 4 Imported by: 0

README

GEncroX 开发文档

GEncroX是一个Go语言加密模块,提供了处理RSA和ECDH密钥对以及AES加密的功能。本文档将介绍如何使用GEncroX模块进行加密、解密和密钥管理。

安装

要使用GEncroX模块,首先需要将它安装到你的Go项目中。你可以使用go get命令来安装:

go get github.com/KindLittleTurtle/GEncroX

然后,在你的Go代码中导入GEncroX模块:

import "github.com/KindLittleTurtle/GEncroX"

RSA 密钥管理

生成RSA密钥对
privateKey, publicKey, err := rsa.GenerateKeyPair(bits int)
if err != nil {
    // 处理错误
}
  • bits是密钥的位数,通常可以选择2048或4096。
将RSA密钥转换为PEM格式
privateKeyPEM, err := privateKey.ToPEM()
if err != nil {
    // 处理错误
}

publicKeyPEM, err := publicKey.ToPEM()
if err != nil {
    // 处理错误
}
从PEM格式的密钥恢复RSA密钥
privateKey, err := rsa.PEMKeyToPrivateKey(privateKeyPEM)
if err != nil {
    // 处理错误
}

publicKey, err := rsa.PEMKeyToPublicKey(publicKeyPEM)
if err != nil {
    // 处理错误
}

RSA 加密和解密

使用RSA公钥加密文本
ciphertext, err := rsa.Encrypt(plaintext, publicKey)
if err != nil {
    // 处理错误
}
使用RSA私钥解密密文
plaintext, err := rsa.Decrypt(ciphertext, privateKey)
if err != nil {
    // 处理错误
}

ECDH 密钥管理

生成ECC密钥对
privateKey, publicKey, err := ecdh.GenerateKeyPair(curve string)
if err != nil {
    // 处理错误
}
  • curve 是曲线类型,可选值为 "P256"、"P384"、"P521"、"X25519"。
将ECC密钥转换为PEM格式
privateKeyPEM, err := privateKey.ToPEM()
if err != nil {
    // 处理错误
}

publicKeyPEM, err := publicKey.ToPEM()
if err != nil {
    // 处理错误
}
从PEM格式的密钥恢复ECC密钥
privateKey, err := ecdh.PEMKeyToPrivateKey(privateKeyPEM)
if err != nil {
    // 处理错误
}

publicKey, err := ecdh.PEMKeyToPublicKey(publicKeyPEM)
if err != nil {
    // 处理错误
}

ECDH 加密和解密

使用ECC密钥对进行加密
ciphertext, err := ecdh.Encrypt(plaintext, privateKey, publicKey)
if err != nil {
    // 处理错误
}
使用ECC密钥对进行解密
plaintext, err := ecdh.Decrypt(ciphertext, privateKey, publicKey)
if err != nil {
    // 处理错误
}

AES 加密和解密

使用AES加密文本
ciphertext, err := aes.Encrypt(plaintext, key)
if err != nil {
    // 处理错误
}
使用AES解密密文
plaintext, err := aes.Decrypt(ciphertext, key)
if err != nil {
    // 处理错误
}

GitHub 仓库

GEncroX的源代码托管在GitHub上,你可以在以下链接中访问它:

GEncroX GitHub 仓库 当然,为了完善开发文档,我们应该包括开源协议。在你的项目中,你可以在README文件中添加开源协议的说明。以下是一个示例:

开源许可证

GEncroX 使用 MIT 许可证。LICENSE 文件

MIT License

Copyright (c) 2023 核善的小兲

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

请确保在你的项目中包含 MIT 许可证,并根据需要对开源代码进行适当的更改,以便与你的项目的具体情况匹配。

总结

GEncroX是一个强大的加密模块,提供了RSA和ECDH密钥管理以及AES加密和解密功能。使用本文档中的示例代码,你可以轻松地在你的Go项目中实现加密和解密操作。请确保妥善保管你的密钥,并小心处理加密数据以确保安全性。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParsePEMPrivateKey

func ParsePEMPrivateKey(PEMKey []byte) (interface{}, error)

ParsePEMPrivateKey 解码PEM格式的私钥

func ParsePEMPublicKey

func ParsePEMPublicKey(PEMKey []byte) (interface{}, error)

ParsePEMPublicKey 解码PEM格式的公钥

func PrivateKeyToPEM

func PrivateKeyToPEM(KeyType string, PrivateKey interface{}) ([]byte, error)

PrivateKeyToPEM 将私钥编码为PEM格式的字符串

func PublicKeyToPEM

func PublicKeyToPEM(KeyType string, PublicKey interface{}) ([]byte, error)

PublicKeyToPEM 将公钥编码为PEM格式的字符串

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL