Key.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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
  43. //! bestimmten Wert \param c Der Wert, auf den die Bytes gesetzt
  44. //! werden sollen \param len Die Anzahl der Bytes die gesetzt werden
  45. //! sollen
  46. DLLEXPORT void fill(const char c, int len);
  47. //! Setzt einen bestimmte Abschnitt von Bytes des Arrays auf einen
  48. //! bestimmten Wert \param c Der Wert, auf den die Bytes gesetzt
  49. //! werden sollen \param beg Die Startposition des zu setzenden
  50. //! Abschnittes \param end Die Endposition des zu setzenden
  51. //! Abschnittes (nicht enthalten)
  52. DLLEXPORT void fill(const char c, int beg, int end);
  53. //! Kopiert bestimmte bytes in den Array
  54. //! \param c Die Bytes, die kopiert werden sollen
  55. //! \param cLength Die Anzahl an Bytes, die gesetzt werden sollen
  56. DLLEXPORT void fill(const char* c, int cLength);
  57. //! Setzt ein bestimmtes Byte auf einen Wert
  58. //! \param c Der Wert, auf den das Byte gesetzt werden soll
  59. //! \param pos Die Position des Bytes im Array
  60. DLLEXPORT void set(const char c, int pos);
  61. //! Gibt die Länge des Arrays zurück
  62. DLLEXPORT int getLength() const;
  63. //! Gibt den Array von Bytes zurück
  64. DLLEXPORT char* getBytes() const;
  65. };
  66. //! Kann Bytesequenzen mit bestimmten Schlüsseln verschlüsseln und
  67. //! entschlüsseln
  68. class Key : public virtual ReferenceCounter
  69. {
  70. private:
  71. unsigned char* key;
  72. int length;
  73. int pos;
  74. public:
  75. //! Erzeugt ein leeres Zeichnung
  76. DLLEXPORT Key();
  77. //! Erzeugt ein neues Zeichnung mi einem Schlüssel
  78. //! \param s Der Schlüssel, der zum verschlüsseln und entchlüsseln
  79. //! verwendet werden soll \param length Die Länge des Schlüssels
  80. DLLEXPORT Key(const char* s, int length);
  81. //! Löscht das Zeichnung
  82. DLLEXPORT ~Key();
  83. //! Setzt die Position im Schlüssel, wo mit dem verschlüsseln und
  84. //! entschlüsseln begonnen werden soll \param p Die Position im
  85. //! Schlüssel
  86. DLLEXPORT void setPos(__int64 p);
  87. //! Setzt den Schlüssel, der zum ver- und entschlüsseln verwendet
  88. //! werden soll \param s Der Schlüssel \param length Die Länge des
  89. //! Schlüssels
  90. DLLEXPORT void setKey(const char* s, int length);
  91. //! Verschlüsselt einen Byte Array mit dem gesetzten Schlüssel
  92. //! \param daten Der Byte Array, der verschlüsselt werden soll. Wird
  93. //! von der Funktion verändert
  94. DLLEXPORT void codieren(Bytes* daten);
  95. //! Entschlüsselt einen Byte Array mit dem gesetzten Schlüssel
  96. //! \param daten Der Byte Array, der entschlüsselt werden soll. Wird
  97. //! von der Funktion verändert
  98. DLLEXPORT void decodieren(Bytes* daten);
  99. };
  100. } // namespace Encryption
  101. } // namespace Framework
  102. #endif