service/vendor/github.com/forgoer/openssl/README.md

133 lines
3.3 KiB
Markdown
Raw Normal View History

2024-06-18 17:10:42 +08:00
# Openssl encryption
[![Default](https://github.com/forgoer/openssl/workflows/build/badge.svg?branch=master)](https://github.com/forgoer/openssl/actions)
[![Coverage Status](https://coveralls.io/repos/github/forgoer/openssl/badge.svg?branch=master)](https://coveralls.io/github/forgoer/openssl?branch=master)
A functions wrapping of OpenSSL library for symmetric and asymmetric encryption and decryption
- [AES](#AES)
- [DES](#DES)
- [3DES](#DES)
- [RSA](#RSA)
- [HMAC-SHA](#HMAC-SHA)
## Installation
The only requirement is the [Go Programming Language](https://golang.org/dl/)
```
go get -u github.com/forgoer/openssl
```
## Usage
### AES
The length of the key can be 16/24/32 characters (128/192/256 bits)
AES-ECB:
```go
src := []byte("123456")
key := []byte("1234567890123456")
dst , _ := openssl.AesECBEncrypt(src, key, openssl.PKCS7_PADDING)
fmt.Printf(base64.StdEncoding.EncodeToString(dst)) // yXVUkR45PFz0UfpbDB8/ew==
dst , _ = openssl.AesECBDecrypt(dst, key, openssl.PKCS7_PADDING)
fmt.Println(string(dst)) // 123456
```
AES-CBC:
```go
src := []byte("123456")
key := []byte("1234567890123456")
iv := []byte("1234567890123456")
dst , _ := openssl.AesCBCEncrypt(src, key, iv, openssl.PKCS7_PADDING)
fmt.Println(base64.StdEncoding.EncodeToString(dst)) // 1jdzWuniG6UMtoa3T6uNLA==
dst , _ = openssl.AesCBCDecrypt(dst, key, iv, openssl.PKCS7_PADDING)
fmt.Println(string(dst)) // 123456
```
### DES
The length of the key must be 8 characters (64 bits).
DES-ECB:
```go
openssl.DesECBEncrypt(src, key, openssl.PKCS7_PADDING)
openssl.DesECBDecrypt(src, key, openssl.PKCS7_PADDING)
```
DES-CBC:
```go
openssl.DesCBCEncrypt(src, key, iv, openssl.PKCS7_PADDING)
openssl.DesCBCDecrypt(src, key, iv, openssl.PKCS7_PADDING)
```
### 3DES
The length of the key must be 24 characters (192 bits).
3DES-ECB:
```go
openssl.Des3ECBEncrypt(src, key, openssl.PKCS7_PADDING)
openssl.Des3ECBDecrypt(src, key, openssl.PKCS7_PADDING)
```
3DES-CBC:
```go
openssl.Des3CBCEncrypt(src, key, iv, openssl.PKCS7_PADDING)
openssl.Des3CBCDecrypt(src, key, iv, openssl.PKCS7_PADDING)
```
### RSA
```go
openssl.RSAGenerateKey(bits int, out io.Writer)
openssl.RSAGeneratePublicKey(priKey []byte, out io.Writer)
openssl.RSAEncrypt(src, pubKey []byte) ([]byte, error)
openssl.RSADecrypt(src, priKey []byte) ([]byte, error)
openssl.RSASign(src []byte, priKey []byte, hash crypto.Hash) ([]byte, error)
openssl.RSAVerify(src, sign, pubKey []byte, hash crypto.Hash) error
```
### HMAC-SHA
```
// Sha1 Calculate the sha1 hash of a string
Sha1(str string) []byte
// HmacSha1 Calculate the sha1 hash of a string using the HMAC method
HmacSha1(key string, data string) []byte
// HmacSha1ToString Calculate the sha1 hash of a string using the HMAC method, outputs lowercase hexits
HmacSha1ToString(key string, data string) string
// Sha256 Calculate the sha256 hash of a string
Sha256(str string) []byte
// HmacSha256 Calculate the sha256 hash of a string using the HMAC method
HmacSha256(key string, data string) []byte
// HmacSha256ToString Calculate the sha256 hash of a string using the HMAC method, outputs lowercase hexits
HmacSha256ToString(key string, data string) string
```
## License
This project is licensed under the [Apache 2.0 license](LICENSE).
## Contact
If you have any issues or feature requests, please contact us. PR is welcomed.
- https://github.com/forgoer/openssl/issues