OpenLexocad  27.1
SimpleCrypt Class Reference

Simple encryption and decryption of strings and byte arrays. More...

#include <simplecrypt.h>

Public Types

enum  CompressionMode { CompressionAuto, CompressionAlways, CompressionNever }
 
enum  IntegrityProtectionMode { ProtectionNone, ProtectionChecksum, ProtectionHash }
 
enum  Error { ErrorNoError, ErrorNoKeySet, ErrorUnknownVersion, ErrorIntegrityFailed }
 
enum  CryptoFlag { CryptoFlagNone = 0, CryptoFlagCompression = 0x01, CryptoFlagChecksum = 0x02, CryptoFlagHash = 0x04 }
 

Public Member Functions

 SimpleCrypt ()
 
 SimpleCrypt (quint64 key)
 
void setKey (quint64 key)
 
bool hasKey () const
 
void setCompressionMode (CompressionMode mode)
 
CompressionMode compressionMode () const
 
void setIntegrityProtectionMode (IntegrityProtectionMode mode)
 
IntegrityProtectionMode integrityProtectionMode () const
 
Error lastError () const
 
QString encryptToString (const QString &plaintext)
 
QString encryptToString (QByteArray plaintext)
 
QByteArray encryptToByteArray (const QString &plaintext)
 
QByteArray encryptToByteArray (QByteArray plaintext)
 
QString decryptToString (const QString &cyphertext)
 
QByteArray decryptToByteArray (const QString &cyphertext)
 
QString decryptToString (QByteArray cypher)
 
QByteArray decryptToByteArray (QByteArray cypher)
 
 Q_DECLARE_FLAGS (CryptoFlags, CryptoFlag)
 

Detailed Description

Simple encryption and decryption of strings and byte arrays.

This class provides a simple implementation of encryption and decryption of strings and byte arrays.

Warning
The encryption provided by this class is NOT strong encryption. It may help to shield things from curious eyes, but it will NOT stand up to someone determined to break the encryption. Don't say you were not warned.

The class uses a 64 bit key. Simply create an instance of the class, set the key, and use the encryptToString() method to calculate an encrypted version of the input string. To decrypt that string again, use an instance of SimpleCrypt initialized with the same key, and call the decryptToString() method with the encrypted string. If the key matches, the decrypted version of the string will be returned again.

If you do not provide a key, or if something else is wrong, the encryption and decryption function will return an empty string or will return a string containing nonsense. lastError() will return a value indicating if the method was succesful, and if not, why not.

SimpleCrypt is prepared for the case that the encryption and decryption algorithm is changed in a later version, by prepending a version identifier to the cypertext.

Member Enumeration Documentation

◆ CompressionMode

CompressionMode describes if compression will be applied to the data to be encrypted.

Enumerator
CompressionAuto 

Only apply compression if that results in a shorter plaintext.

CompressionAlways 

Always apply compression. Note that for short inputs, a compression may result in longer data

CompressionNever 

Never apply compression.

◆ CryptoFlag

Enumerator
CryptoFlagNone 
CryptoFlagCompression 
CryptoFlagChecksum 
CryptoFlagHash 

◆ Error

Error describes the type of error that occured.

Enumerator
ErrorNoError 

No error occurred.

ErrorNoKeySet 

No key was set. You can not encrypt or decrypt without a valid key.

ErrorUnknownVersion 

The version of this data is unknown, or the data is otherwise not valid.

ErrorIntegrityFailed 

The integrity check of the data failed. Perhaps the wrong key was used.

◆ IntegrityProtectionMode

IntegrityProtectionMode describes measures taken to make it possible to detect problems with the data or wrong decryption keys.

Measures involve adding a checksum or a cryptograhpic hash to the data to be encrypted. This increases the length of the resulting cypertext, but makes it possible to check if the plaintext appears to be valid after decryption.

Enumerator
ProtectionNone 

The integerity of the encrypted data is not protected. It is not really possible to detect a wrong key, for instance.

ProtectionChecksum 

A simple checksum is used to verify that the data is in order. If not, an empty string is returned.

ProtectionHash 

A cryptographic hash is used to verify the integrity of the data. This method produces a much stronger, but longer check

Constructor & Destructor Documentation

◆ SimpleCrypt() [1/2]

SimpleCrypt::SimpleCrypt ( )

Constructor.

Constructs a SimpleCrypt instance without a valid key set on it.

◆ SimpleCrypt() [2/2]

SimpleCrypt::SimpleCrypt ( quint64  key)
explicit

Constructor.

Constructs a SimpleCrypt instance and initializes it with the given

  • key.

Member Function Documentation

◆ compressionMode()

CompressionMode SimpleCrypt::compressionMode ( ) const
inline

Returns the CompressionMode that is currently in use.

◆ decryptToByteArray() [1/2]

QByteArray SimpleCrypt::decryptToByteArray ( const QString &  cyphertext)

Decrypts a cyphertext string encrypted with this class with the set key back to the plain text version.

If an error occured, such as non-matching keys between encryption and decryption, an empty string or a string containing nonsense may be returned.

◆ decryptToByteArray() [2/2]

QByteArray SimpleCrypt::decryptToByteArray ( QByteArray  cypher)

Decrypts a cyphertext binary encrypted with this class with the set key back to the plain text version.

If an error occured, such as non-matching keys between encryption and decryption, an empty string or a string containing nonsense may be returned.

◆ decryptToString() [1/2]

QString SimpleCrypt::decryptToString ( const QString &  cyphertext)

Decrypts a cyphertext string encrypted with this class with the set key back to the plain text version.

If an error occured, such as non-matching keys between encryption and decryption, an empty string or a string containing nonsense may be returned.

◆ decryptToString() [2/2]

QString SimpleCrypt::decryptToString ( QByteArray  cypher)

Decrypts a cyphertext binary encrypted with this class with the set key back to the plain text version.

If an error occured, such as non-matching keys between encryption and decryption, an empty string or a string containing nonsense may be returned.

◆ encryptToByteArray() [1/2]

QByteArray SimpleCrypt::encryptToByteArray ( const QString &  plaintext)

Encrypts the

  • plaintext string with the key the class was initialized with, and returns a binary cyphertext in a QByteArray the result.

This method returns a byte array, that is useable for storing a binary format. If you need a string you can store in a text file, use encryptToString() instead.

◆ encryptToByteArray() [2/2]

QByteArray SimpleCrypt::encryptToByteArray ( QByteArray  plaintext)

Encrypts the

  • plaintext QByteArray with the key the class was initialized with, and returns a binary cyphertext in a QByteArray the result.

This method returns a byte array, that is useable for storing a binary format. If you need a string you can store in a text file, use encryptToString() instead.

◆ encryptToString() [1/2]

QString SimpleCrypt::encryptToString ( const QString &  plaintext)

Encrypts the

  • plaintext string with the key the class was initialized with, and returns a cyphertext the result. The result is a base64 encoded version of the binary array that is the actual result of the string, so it can be stored easily in a text format.

◆ encryptToString() [2/2]

QString SimpleCrypt::encryptToString ( QByteArray  plaintext)

Encrypts the

  • plaintext QByteArray with the key the class was initialized with, and returns a cyphertext the result. The result is a base64 encoded version of the binary array that is the actual result of the encryption, so it can be stored easily in a text format.

◆ hasKey()

bool SimpleCrypt::hasKey ( ) const
inline

Returns true if SimpleCrypt has been initialized with a key.

◆ integrityProtectionMode()

IntegrityProtectionMode SimpleCrypt::integrityProtectionMode ( ) const
inline

Returns the IntegrityProtectionMode that is currently in use.

◆ lastError()

Error SimpleCrypt::lastError ( ) const
inline

Returns the last error that occurred.

◆ Q_DECLARE_FLAGS()

SimpleCrypt::Q_DECLARE_FLAGS ( CryptoFlags  ,
CryptoFlag   
)

◆ setCompressionMode()

void SimpleCrypt::setCompressionMode ( CompressionMode  mode)
inline

Sets the compression mode to use when encrypting data. The default mode is Auto.

Note that decryption is not influenced by this mode, as the decryption recognizes what mode was used when encrypting.

◆ setIntegrityProtectionMode()

void SimpleCrypt::setIntegrityProtectionMode ( IntegrityProtectionMode  mode)
inline

Sets the integrity mode to use when encrypting data. The default mode is Checksum.

Note that decryption is not influenced by this mode, as the decryption recognizes what mode was used when encrypting.

◆ setKey()

void SimpleCrypt::setKey ( quint64  key)

(Re-) initializes the key with the given

  • key.

The documentation for this class was generated from the following file: