# Poco::Crypto

# class CipherKey

Library: Crypto
Package: Cipher
Header: Poco/Crypto/CipherKey.h

## Description

CipherKey stores the key information for decryption/encryption of data. To create a random key, using the following code:

    CipherKey key("aes-256");

Note that you won't be able to decrypt data encrypted with a random key once the Cipher is destroyed unless you persist the generated key and IV. An example usage for random keys is to encrypt data saved in a temporary file.

To create a key using a human-readable password string, use the following code. We create a AES Cipher and use a salt value to make the key more robust:

    std::string password = "secret";
    std::string salt("asdff8723lasdf(**923412");

CipherKey key("aes-256", password, salt);

## Member Summary

Member Functions: blockSize, getIV, getKey, impl, ivSize, keySize, mode, name, setIV, setKey

## Types

### ByteVec

typedef CipherKeyImpl::ByteVec ByteVec;

### Mode

typedef CipherKeyImpl::Mode Mode;

## Enumerations

### Anonymous

DEFAULT_ITERATION_COUNT = 2000

Default iteration count to use with generateKey(). RSA security recommends an iteration count of at least 1000.

## Constructors

### CipherKey

CipherKey(
const std::string & name
);

Creates a new CipherKeyImpl object. Autoinitializes key and initialization vector.

### CipherKey

CipherKey(
const std::string & name,
const ByteVec & key,
const ByteVec & iv
);

Creates a new CipherKeyImpl object using the given cipher name, key and initialization vector.

### CipherKey

CipherKey(
const std::string & name,
const std::string & passphrase,
const std::string & salt = "",
int iterationCount = DEFAULT_ITERATION_COUNT
);

Creates a new CipherKeyImpl object using the given cipher name, passphrase, salt value and iteration count.

## Destructor

### ~CipherKey

~CipherKey();

Destroys the CipherKeyImpl.

## Member Functions

### blockSize

int blockSize() const;

Returns the block size of the Cipher.

### getIV

const ByteVec & getIV() const;

Returns the initialization vector (IV) for the Cipher.

### getKey

const ByteVec & getKey() const;

Returns the key for the Cipher.

### impl

CipherKeyImpl::Ptr impl();

Returns the impl object

### ivSize

int ivSize() const;

Returns the IV size of the Cipher.

### keySize

int keySize() const;

Returns the key size of the Cipher.

### mode

Mode mode() const;

Returns the Cipher's mode of operation.

### name

const std::string & name() const;

Returns the name of the Cipher.

### setIV

void setIV(
const ByteVec & iv
);

Sets the initialization vector (IV) for the Cipher.

### setKey

void setKey(
const ByteVec & key
);

Sets the key for the Cipher.