项目作者: galets

项目描述 :
简单的非对称加密,C ++实现
高级语言: C++
项目地址: git://github.com/galets/oneway-cpp.git
创建时间: 2014-12-06T23:02:25Z
项目社区:https://github.com/galets/oneway-cpp

开源协议:GNU General Public License v3.0

下载


oneway-cpp

Simple asymmetric encryption, C++ implementation

Purpose:

data encryption on the systems, where storing password or key in cleartext is not desirable option.

Usage:

Tool will use standard io streams where possible, or files could be specified on command line

Generate private key:

  1. oneway --genkey private.key
  2. oneway --genkey >private.key

Extract public key component from private key:

  1. oneway --publickey private.key public.key
  2. oneway --publickey <private.key >public.key

Encrypt file using public key:

  1. oneway --encrypt public.key plaintext.txt encrypted.ascr
  2. oneway --encrypt public.key plaintext.txt >encrypted.ascr
  3. oneway --encrypt public.key <plaintext.txt >encrypted.ascr

Decrypt file using private key:

  1. oneway --decrypt private.key encrypted.ascr plaintext.txt
  2. oneway --decrypt private.key encrypted.ascr >plaintext.txt
  3. oneway --decrypt private.key <encrypted.ascr >plaintext.txt

Two-stage decryption:

Where it is necessary to allow 3rd party independently decrypt files without providing private key,
it is possible to decrypt files in two stages: first, a symmetric key is extracted,
then file gets decrypted using given symmetric key

Extract symmetric key:

  1. oneway --dump-key private.key encrypted.ascr key.base64
  2. oneway --dump-key private.key encrypted.ascr >key.base64
  3. oneway --dump-key private.key <encrypted.ascr >key.base64

Decrypt file using symmetric key:

  1. oneway --decrypt-with-symkey "key-in-base64-format" encrypted.ascr plaintext.txt
  2. oneway --decrypt-with-symkey "key-in-base64-format" encrypted.ascr >plaintext.txt
  3. oneway --decrypt-with-symkey "key-in-base64-format" <encrypted.ascr >plaintext.txt

Symmetric key from one file would not work on any other file.

Internals:

Each file is encrypted using AES-CBC-256 with randomly generated key. AES key is encrypted using 4096
bit RSA and stored with the file.

File structure:

  1. 4 bytes: signature "ASCR"
  2. 16 bytes: AES IV
  3. 512 bytes: RSA 4096-encrypted AES key
  4. rest: encrypted file contents

See Also:

Files in compatible format are produced by similar .NET utility located at:
https://github.com/galets/AsymmetricCrypt

License:

This utility is licensed under GPLv3. See

Third Party Components: