https://github.com/maxlaverse/synocrypto
Portable encryption/decryption CLI and Go library, compatible with Synology CloudSync
https://github.com/maxlaverse/synocrypto
cloud-sync decryption encryption synology
Last synced: 10 months ago
JSON representation
Portable encryption/decryption CLI and Go library, compatible with Synology CloudSync
- Host: GitHub
- URL: https://github.com/maxlaverse/synocrypto
- Owner: maxlaverse
- License: gpl-3.0
- Created: 2021-04-06T20:09:31.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2022-09-17T15:12:24.000Z (over 3 years ago)
- Last Synced: 2025-03-26T01:13:09.076Z (11 months ago)
- Topics: cloud-sync, decryption, encryption, synology
- Language: Go
- Homepage:
- Size: 741 KB
- Stars: 7
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Synology Cloud Sync encryption/decryption in Go
[](https://godoc.org/github.com/maxlaverse/synocrypto)
[](https://github.com/maxlaverse/synocrypto/actions/workflows/workflow.yaml)
[](https://goreportcard.com/report/github.com/maxlaverse/synocrypto)
[](https://github.com/maxlaverse/synocrypto/tags)
## Overview
A Go library to decrypt/encrypt Synology Cloud Sync files on various Operating Systems (Linux, macOS, Windows).
The file format was originally discovered by [@marnix](https://github.com/marnix)
and is summarized [in this document](ENCRYPTION.md).
## Command line tool
### Installation
Assuming you have the go toolchain installed:
```
go install github.com/maxlaverse/synocrypto/cli/synocrypto
```
You can also download pre-compiled binaries from the [releases] page.
### Usage
```
NAME:
synocrypto - A cli for encrypting and decrypting Synology Cloud Sync files
USAGE:
synocrypto [global options] command [command options] [arguments...]
COMMANDS:
decrypt, d Decrypts a file
encrypt, e Encrypts a file
metadata, m Displays the metadata of a file
version Prints the version
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--debug outputs additional debug lines (default: false)
--help, -h show help (default: false)
```
## Library
### Decryption Usage
```go
encFile, err := os.Open("./my-encrypted-file.jpg")
if err != nil {
panic(err)
}
defer encFile.Close()
decFile, err := os.OpenFile("./my-decrypted-file.jpg", os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
panic(err)
}
defer decFile.Close()
decrypter := synocrypto.NewDecrypter(synocrypto.DecrypterOptions{
Password: "synocrypto",
})
err = decrypter.Decrypt(encFile, decFile)
if err != nil {
panic(err)
}
```
### Encryption Usage
```go
plainFile, err := os.Open("./my-plain-file.jpg")
if err != nil {
panic(err)
}
defer plainFile.Close()
encFile, err := os.OpenFile("./my-encrypted-file.jpg", os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
panic(err)
}
defer encFile.Close()
privateKey, err := ioutil.ReadFile("private.pem")
if err != nil {
panic(err)
}
encrypter := synocrypto.NewEncrypter(synocrypto.EncrypterOptions{
Password: "synocrypto",
PrivateKey: privateKey,
})
err = encrypter.Encrypt(plainFile, encFile)
if err != nil {
panic(err)
}
```
[releases]: https://github.com/maxlaverse/synocrypto/releases