bkcrypto

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2023 License: MIT Imports: 5 Imported by: 1

README

BlueKing crypto-golang-sdk

(English Documents Available)

Overview

️🔧 BlueKing crypto-golang-sdk 是一个基于 铜锁 的轻量级密码学工具包,为 Golang 应用提供 SM4 的加解密实现

Features

  • [Basic] 支持中国商用密码学算法:SM4
  • [Basic] 支持国际主流密码学算法:AES

Getting started

Installation

铜锁编译安装
  1. 下载铜锁安装包,推荐使用 8.3.2 版本 https://github.com/Tongsuo-Project/Tongsuo/releases

  2. 铜锁库编译和安装 目前铜锁支持的操作系统有:各种Linux发行版、macOS、Android、iOS和Windows。在这些操作系统上,还需要事先准备好对应的环境:

    • make
    • Perl 5,以及Text::Template模块
    • C编译器
    • C库 铜锁对第三方库的依赖很少,但是目前依然对Perl依赖较大。

下面以 linux 环境为例,假设铜锁的安装路径为:/opt/tongsuo

# --prefix 选项可以自定义安装目录,不设置则默认为 /usr/local/ 下
./config --prefix=/opt/tongsuo
# 编译
make -j
# 安装
make install

详细编译安装流程可参考: https://www.yuque.com/tsdoc/ts/rp7ul8a4ttav8ql9

代码中引用 crypto-golang-sdk
import "github.com/TencentBlueKing/crypto-golang-sdk"
编译引用了 crypto-golang-sdk 的代码
  1. 设置 CGO_ENABLED=1 环境变量,开启 CGO
  2. 设置 CGO_CFLAGS 环境变量为 -I${第一步设置的铜锁库的安装路径}/include -Wno-deprecated-declarations
  3. 设置 CGO_LDFLAGS 环境变量为 -L/${第一步设置的铜锁库的安装路径}/lib -lssl -lcrypto

下面以 linux 环境为例,假设铜锁的安装路径为:/opt/tongsuo

CGO_ENABLED=1 CGO_CFLAGS="-I/opt/tongsuo/include -Wno-deprecated-declarations" CGO_LDFLAGS="-L/opt/tongsuo/lib -lssl -lcrypto" go build -o main .

Usage

下面以 SM4 加解密为例:

package main

import (
	"fmt"

	"github.com/TencentBlueKing/crypto-golang-sdk"
)

func main() {
	// 原文
	plaintext := []byte("origin text")

	// 配置的key和iv
	key := []byte("kFkfZiCTSTz0iar2")
	iv := []byte("X85xBwRMfmiG11QP")

	// 创建加解密器
	crypto, err := bkcrypto.NewSm4(key, iv)
	if err != nil {
		fmt.Printf("new crypto failed, err: %v\n", err)
		return
	}

	// 加密操作
	ciphertext, err := crypto.Encrypt(plaintext)
	if err != nil {
		fmt.Printf("encrypt failed, err: %v\n", err)
		return
	}

	// 解密操作
	decrypted, err := crypto.Decrypt(ciphertext)
	if err != nil {
		fmt.Printf("decrypt failed, err: %v\n", err)
		return
	}

	fmt.Printf("encrypted text: %s, decrypted text: %s\n", ciphertext, decrypted)
}

Roadmap

Support

BlueKing Community

  • BK-CMDB:蓝鲸配置平台(蓝鲸 CMDB)是一个面向资产及应用的企业级配置管理平台。
  • BK-CI:蓝鲸持续集成平台是一个开源的持续集成和持续交付系统,可以轻松将你的研发流程呈现到你面前。
  • BK-BCS:蓝鲸容器管理平台是以容器技术为基础,为微服务业务提供编排管理的基础服务平台。
  • BK-PaaS:蓝鲸 PaaS 平台是一个开放式的开发平台,让开发者可以方便快捷地创建、开发、部署和管理 SaaS 应用。
  • BK-SOPS:标准运维(SOPS)是通过可视化的图形界面进行任务流程编排和执行的系统,是蓝鲸体系中一款轻量级的调度编排类 SaaS 产品。
  • BK-JOB 蓝鲸作业平台(Job)是一套运维脚本管理系统,具备海量任务并发处理能力。

Contributing

如果你有好的意见或建议,欢迎给我们提 Issues 或 Pull Requests,为蓝鲸开源社区贡献力量。
腾讯开源激励计划 鼓励开发者的参与和贡献,期待你的加入。

License

基于 MIT 协议, 详细请参考 LICENSE

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Crypto

type Crypto interface {
	Encrypt(plaintext []byte) ([]byte, error)
	Decrypt(ciphertext []byte) ([]byte, error)
}

Crypto defines an interface that supports encryption and decryption.

func NewAesGcm

func NewAesGcm(key []byte, nonce []byte) (Crypto, error)

NewAesGcm returns a new AES-GCM crypto instance

func NewSm4

func NewSm4(key, iv []byte) (Crypto, error)

NewSm4 returns a new SM4 crypto instance

Jump to

Keyboard shortcuts

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