Giter VIP home page Giter VIP logo

confcrypt's Introduction

confcrypt GoDoc

Encrypt your sensitive data in config file and decrypt it at runtime.

Get

go get -u "github.com/WqyJh/confcrypt"

Usage

Use any random string as your config key.

Use EncryptString to encrypt all of your sensitive data one by one.

var (
	key = "12345678"
)

func TestEncrypt(t *testing.T) {
	plain := "hello"
	encrypted, err := confcrypt.EncryptString(plain, key)
	assert.NoError(t, err)
	t.Logf("encrypted: '%s'", encrypted)

	decrypted, err := confcrypt.Decrypt(encrypted[4:], key)
	assert.NoError(t, err)
	t.Logf("decrypted: '%s'", decrypted)
}

func TestDecrypt(t *testing.T) {
	encrypted := "ENC~tSbCaeksELsWsw9+eXADFTRONqOTiPkL6q5yRW8Wp4Um"
	decrypted, err := confcrypt.Decrypt(encrypted[4:], key)
	assert.NoError(t, err)
	t.Logf("decrypted: '%s'", decrypted)
}

Replace all of your sensitive data in your config with the encrypted string, which should start with ENC~.

And use Decrypt to decrypt the encrypted string without ENC~ prefix.

It's recommended to use Decode to decrypt all encrypted string fields in a struct.

For example, assume you have config struct as below:

type AppConfig {
    Id string
    Secret string
}
type Config struct {
    User string
    Password string
    App AppConfig
}

You load it from config file and got:

cfg := Config{
    User: "foo",
    Password: "ENC~xxxxxxxxxxxxxxxxxxxxx",
    App: AppConfig{
        Id: "bar",
        Secret: "ENC~yyyyyyyyyyyyyyyyyyyy",
    },
}

Then use Decode to decrypt the encrypted fields including Password and Secret.

result, err := confcrypt.Decode(&cfg, key)
// result.Password is decrypted
// result.App.Secret is decrypted

License

Released under the MIT License.

confcrypt's People

Contributors

wqyjh avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.