Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A simple, semantic and developer-friendly crypto package for golang

License

NotificationsYou must be signed in to change notification settings

dromara/dongle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dongle

Carbon ReleaseGo TestGo Report CardcodecovCarbon DocAwesomeLicense

English |简体中文 |日本語

Introduction

Dongle is a simple, semantic and developer-friendly golang crypto package with100% unit test coverage,has been included byawesome-go

Repository

github.com/dromara/dongle

gitee.com/dromara/dongle

gitcode.com/dromara/dongle

Quick Start

Installation

go version >= 1.23

// Via githubgoget-ugithub.com/dromara/dongle// Via giteegoget-ugitee.com/dromara/dongle// Via gitcodegoget-ugitcode.com/dromara/dongle

Dongle was donated to thedromara organization, the repository URL has changed. Ifthe previous repository used wasgolang-module/dongle, please replace the original repository with the new repositoryingo.mod, or execute the following command:

gomodedit-replacegithub.com/golang-module/dongle=github.com/dromara/dongle

Example Usage

Encode&Decode(usingBase64 as an example)

import ("github.com/dromara/dongle")dongle.Encode.FromString("hello world").ByBase64().ToString()// aGVsbG8gd29ybGQ=dongle.Decode.FromString("aGVsbG8gd29ybGQ=").ByBase64().ToString()// hello world

Hash Algorithm(usingMd5 as an example)

import ("github.com/dromara/dongle")dongle.Hash.FromString("hello world").ByMd5().ToHexString()// 5eb63bbbe01eeed093cb22bb8f5acdc3dongle.Hash.FromString("hello world").ByMd5().ToBase64String()// XrY7u+Ae7tCTyyK7j1rNww==

Hmac Algorithm(usingMd5 as an example)

import ("github.com/dromara/dongle")dongle.Hash.FromString("hello world").WithKey([]byte("dongle")).ByMd5().ToHexString()// 4790626a275f776956386e5a3ea7b726dongle.Hash.FromString("hello world").WithKey([]byte("dongle")).ByMd5().ToBase64String()// R5Biaidfd2lWOG5aPqe3Jg==

Symmetric Encryption&Decryption(usingAES as an example)

import ("github.com/dromara/dongle""github.com/dromara/dongle/crypto/cipher")// Create cipherc:=cipher.NewAesCipher(cipher.CBC)// Set key (16 bytes)c.SetKey([]byte("dongle1234567890"))// Set initialization vector (16 bytes)c.SetIV([]byte("1234567890123456"))// Set padding mode (optional, default is PKCS7, only CBC/ECB block modes need to set padding mode)c.SetPadding(cipher.PKCS7)// Encrypt string plaintext, return hex-encoded string ciphertextdongle.Encrypt.FromString("hello world").ByAes(c).ToHexString()// 48c6bc076e1da2946e1c0e59e9c91ae9// Encrypt string plaintext, return base64-encoded string ciphertextdongle.Encrypt.FromString("hello world").ByAes(c).ToBase64String()// SMa8B24dopRuHA5Z6cka6Q==// Decrypt hex-encoded string ciphertext, return string plaintextdongle.Decrypt.FromHexString("48c6bc076e1da2946e1c0e59e9c91ae9").ByAes(c).ToString()// hello world// Decrypt base64-encoded string ciphertext, return string plaintextdongle.Decrypt.FromBase64String("SMa8B24dopRuHA5Z6cka6Q==").ByAes(c).ToString()// hello world

Asymmetric Encryption&Decryption(usingRSA as an example)

import ("crypto""github.com/dromara/dongle""github.com/dromara/dongle/crypto/keypair")// Create key pairkp:=keypair.NewRsaKeyPair()// Set key format (optional, default is PKCS8)kp.SetFormat(keypair.PKCS8)// Set hash algorithm (optional, default is SHA256, only PKCS8 key format need to set hash algorithm)kp.SetHash(crypto.SHA256)// Set public keykp.SetPublicKey([]byte("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqzZNa9VrcewyU6wDoV7Y9kAHqX1VK0B3Rb6GNmQe4zLEfce7cVTaLrc4VGTKl35tADG1cRHqtaG4S/WttpiGZBhxJy4MpOXb6eIPiVLsn2lL+rJo5XdbSr3gyjxEOQQ97ihtw4lDd5wMo4bIOuw1LtMezHC1outlM6x+/BB0BSQIDAQAB"))// Encrypt string plaintext by public key, return hex-encoded string ciphertextdongle.Encrypt.FromString("hello world").ByRsa(kp).ToHexString()// 7fae94fd1a8b880d8d5454dd8df30c40...// Encrypt string plaintext by public key, return base64-encoded string ciphertextdongle.Encrypt.FromString("hello world").ByRsa(kp).ToBase64String()// f66U/RqLiA2NVFTdjfMMQA==...// Set private keykp.SetPrivateKey([]byte("MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKrNk1r1Wtx7DJTrAOhXtj2QAepfVUrQHdFvoY2ZB7jMsR9x7txVNoutzhUZMqXfm0AMbVxEeq1obhL9a22mIZkGHEnLgyk5dvp4g+JUuyfaUv6smjld1tKveDKPEQ5BD3uKG3DiUN3nAyjhsg67DUu0x7McLWi62UzrH78EHQFJAgMBAAECgYAeo3nHWzPNURVUsUMcan96U5bEYA2AugxfQVMNf2HvOGidZ2adh3udWrQY/MglERNcTd5gKriG2rDEH0liBecIrNKsBL4lV+qHEGRUcnDDdtUBdGInEU8lve5keDgmX+/huXSRJ+3tYA5u9j+32RquVczvIdtb5XnBLUl61k0osQJBAON5+eJjtw6xpn+pveU92BSHvaJYVyrLHwUjR07aNKb7GlGVM3MGf1FCa8WQUo9uUzYxGLtg5Qf3sqwOrwPd5UsCQQDAOF/zWqGuY3HfV/1wgiXiWp8rc+S8tanMj5M37QQbYW5YLjUmJImoklVahv3qlgLZdEN5ZSueM5jfoSFtNts7AkBKoRDvSiGbi4MBbTHkzLZgfewkH/FxE7S4nctePk553fXTgCyh9ya8BRuQdHnxnpNkOxVPHEnnpEcVFbgrf5gjAkB7KmRI4VTiEfRgINhTJAG0VU7SH/N7+4cufPzfA+7ywG5c8Fa79wOB0SoB1KeUjcSLo5Ssj2fwea1F9dAeU90LAkBJQFofveaDa3YlN4EQZOcCvJKmg7xwWuGxFVTZDVVEws7UCQbEOEEXZrNd9x0IF5kpPLR+rxuaRPgUNaDGIh5o"))// Decrypt hex-encoded string ciphertext by private key, return string plaintextdongle.Decrypt.FromHexString("7fae94fd1a8b880d8d5454dd8df30c40...").ByRsa(kp).ToString()// hello world// Decrypt base64-encoded string ciphertext by private key, return string plaintextdongle.Decrypt.FromBase64String("f66U/RqLiA2NVFTdjfMMQA==...").ByRsa(kp).ToString()// hello world

Digital Signature&Verification(usingRSA as an example)

import ("crypto""github.com/dromara/dongle""github.com/dromara/dongle/crypto/keypair")// Create key pairkp:=keypair.NewRsaKeyPair()// Set key format (optional, default is PKCS8)kp.SetFormat(keypair.PKCS8)// Set hash algorithm (optional, default is SHA256, only PKCS8 key format need to set hash algorithm)kp.SetHash(crypto.SHA256)// Set private keykp.SetPrivateKey([]byte("MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKrNk1r1Wtx7DJTrAOhXtj2QAepfVUrQHdFvoY2ZB7jMsR9x7txVNoutzhUZMqXfm0AMbVxEeq1obhL9a22mIZkGHEnLgyk5dvp4g+JUuyfaUv6smjld1tKveDKPEQ5BD3uKG3DiUN3nAyjhsg67DUu0x7McLWi62UzrH78EHQFJAgMBAAECgYAeo3nHWzPNURVUsUMcan96U5bEYA2AugxfQVMNf2HvOGidZ2adh3udWrQY/MglERNcTd5gKriG2rDEH0liBecIrNKsBL4lV+qHEGRUcnDDdtUBdGInEU8lve5keDgmX+/huXSRJ+3tYA5u9j+32RquVczvIdtb5XnBLUl61k0osQJBAON5+eJjtw6xpn+pveU92BSHvaJYVyrLHwUjR07aNKb7GlGVM3MGf1FCa8WQUo9uUzYxGLtg5Qf3sqwOrwPd5UsCQQDAOF/zWqGuY3HfV/1wgiXiWp8rc+S8tanMj5M37QQbYW5YLjUmJImoklVahv3qlgLZdEN5ZSueM5jfoSFtNts7AkBKoRDvSiGbi4MBbTHkzLZgfewkH/FxE7S4nctePk553fXTgCyh9ya8BRuQdHnxnpNkOxVPHEnnpEcVFbgrf5gjAkB7KmRI4VTiEfRgINhTJAG0VU7SH/N7+4cufPzfA+7ywG5c8Fa79wOB0SoB1KeUjcSLo5Ssj2fwea1F9dAeU90LAkBJQFofveaDa3YlN4EQZOcCvJKmg7xwWuGxFVTZDVVEws7UCQbEOEEXZrNd9x0IF5kpPLR+rxuaRPgUNaDGIh5o"))// Sign string data using private key, return hex-encoded signaturehexBytes:=dongle.Sign.FromString("hello world").ByRsa(kp).ToHexBytes()// 7fae94fd1a8b880d8d5454dd8df30c40...// Sign string data using private key, return base64-encoded signaturebase64Bytes:=dongle.Sign.FromString("hello world").ByRsa(kp).ToBase64Bytes()// f66U/RqLiA2NVFTdjfMMQA==...// Set public keykp.SetPublicKey([]byte("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqzZNa9VrcewyU6wDoV7Y9kAHqX1VK0B3Rb6GNmQe4zLEfce7cVTaLrc4VGTKl35tADG1cRHqtaG4S/WttpiGZBhxJy4MpOXb6eIPiVLsn2lL+rJo5XdbSr3gyjxEOQQ97ihtw4lDd5wMo4bIOuw1LtMezHC1outlM6x+/BB0BSQIDAQAB"))// Verify hex-encoded signature using public keydongle.Verify.FromString("hello world").WithHexSign(hexBytes).ByRsa(kp).ToBool()// Verify base64-encoded signature using public keydongle.Verify.FromString("hello world").WithBase64Sign(base64Bytes).ByRsa(kp).ToBool()

For more usage examples, please refer toofficial document.

Contributors

Thanks to all the following who contributed todongle:

Sponsors

Dongle is a non-commercial open source project. If you want to supportdongle, you canbuy a cup of coffee for developer.

Thanks

Dongle had been being developed with GoLand under the free JetBrains Open Source license, I would like to express my thanks here.

JetBrains

License

Dongle is licensed under theMIT License, see theLICENSE file for details.

Contributors4

  •  
  •  
  •  
  •  

Languages


[8]ページ先頭

©2009-2025 Movatter.jp