Key.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #ifndef Key_H
  2. #define Key_H
  3. #include "Betriebssystem.h"
  4. #include "ReferenceCounter.h"
  5. namespace Framework
  6. {
  7. namespace Encryption
  8. {
  9. //! Speichert einen Array von bytes
  10. class Bytes : public virtual ReferenceCounter
  11. {
  12. private:
  13. char *bytes;
  14. bool del;
  15. int length;
  16. public:
  17. //! Erzeugt einen lehren Byte Array
  18. DLLEXPORT Bytes();
  19. //! Erzeugt einen neuen Byte Array mit bestimmter Länge
  20. //! \param length Die Länge des Arrays
  21. DLLEXPORT Bytes( int length );
  22. //! Erzeugt ein neuen Byte Array durch kopieren der bytes
  23. //! \param daten Die Bytes, die kopiert werden sollen
  24. //! \param length Die Anzahl der Bytes die kopiert werden sollen
  25. DLLEXPORT Bytes( const char *daten, int length );
  26. //! Löscht den Array
  27. DLLEXPORT ~Bytes();
  28. //! Befüllt den Bytearray durch kopieren der Bytes
  29. //! \param daten Die Bytes, die kopiert werden sollen
  30. DLLEXPORT void setBytes( const char *daten );
  31. //! Löscht den Array und erzeugt einen neuen
  32. //! \param daten Die Bytes, die kopiert werden sollen
  33. //! \param length Die nänge des Arrays
  34. DLLEXPORT void setBytes( const char *daten, int length );
  35. //! Löscht den Array und übernimmt den übergebenen ohne zu kopieren
  36. //! \param daten Der neue Byte Array
  37. //! \param length Die nänge des Arrays
  38. DLLEXPORT void setBytesZ( char *daten, int length );
  39. //! Setzt alle Bytes des Arrays auf einen bestimmten Wert
  40. //! \param c Der Wert, auf den die Bytes gesetzt werden sollen
  41. DLLEXPORT void fill( const char c );
  42. //! Setzt eine bestimmte Anzahl von Bytes des Arrays auf einen bestimmten Wert
  43. //! \param c Der Wert, auf den die Bytes gesetzt werden sollen
  44. //! \param len Die Anzahl der Bytes die gesetzt werden sollen
  45. DLLEXPORT void fill( const char c, int len );
  46. //! Setzt einen bestimmte Abschnitt von Bytes des Arrays auf einen bestimmten Wert
  47. //! \param c Der Wert, auf den die Bytes gesetzt werden sollen
  48. //! \param beg Die Startposition des zu setzenden Abschnittes
  49. //! \param end Die Endposition des zu setzenden Abschnittes (nicht enthalten)
  50. DLLEXPORT void fill( const char c, int beg, int end );
  51. //! Kopiert bestimmte bytes in den Array
  52. //! \param c Die Bytes, die kopiert werden sollen
  53. //! \param cLength Die Anzahl an Bytes, die gesetzt werden sollen
  54. DLLEXPORT void fill( const char *c, int cLength );
  55. //! Setzt ein bestimmtes Byte auf einen Wert
  56. //! \param c Der Wert, auf den das Byte gesetzt werden soll
  57. //! \param pos Die Position des Bytes im Array
  58. DLLEXPORT void set( const char c, int pos );
  59. //! Gibt die Länge des Arrays zurück
  60. DLLEXPORT int getLength() const;
  61. //! Gibt den Array von Bytes zurück
  62. DLLEXPORT char *getBytes() const;
  63. };
  64. //! Kann Bytesequenzen mit bestimmten Schlüsseln verschlüsseln und entschlüsseln
  65. class Key : public virtual ReferenceCounter
  66. {
  67. private:
  68. unsigned char *key;
  69. int length;
  70. int pos;
  71. public:
  72. //! Erzeugt ein leeres Zeichnung
  73. DLLEXPORT Key();
  74. //! Erzeugt ein neues Zeichnung mi einem Schlüssel
  75. //! \param s Der Schlüssel, der zum verschlüsseln und entchlüsseln verwendet werden soll
  76. //! \param length Die Länge des Schlüssels
  77. DLLEXPORT Key( const char *s, int length );
  78. //! Löscht das Zeichnung
  79. DLLEXPORT ~Key();
  80. //! Setzt die Position im Schlüssel, wo mit dem verschlüsseln und entschlüsseln begonnen werden soll
  81. //! \param p Die Position im Schlüssel
  82. DLLEXPORT void setPos( __int64 p );
  83. //! Setzt den Schlüssel, der zum ver- und entschlüsseln verwendet werden soll
  84. //! \param s Der Schlüssel
  85. //! \param length Die Länge des Schlüssels
  86. DLLEXPORT void setKey( const char *s, int length );
  87. //! Verschlüsselt einen Byte Array mit dem gesetzten Schlüssel
  88. //! \param daten Der Byte Array, der verschlüsselt werden soll. Wird von der Funktion verändert
  89. DLLEXPORT void codieren( Bytes *daten );
  90. //! Entschlüsselt einen Byte Array mit dem gesetzten Schlüssel
  91. //! \param daten Der Byte Array, der entschlüsselt werden soll. Wird von der Funktion verändert
  92. DLLEXPORT void decodieren( Bytes *daten );
  93. };
  94. }
  95. }
  96. #endif