Key.h 4.9 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 Laenge
  20. //! \param length Die Laenge 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. //! Loescht den Array
  27. DLLEXPORT ~Bytes();
  28. //! Befuellt den Bytearray durch kopieren der Bytes
  29. //! \param daten Die Bytes, die kopiert werden sollen
  30. DLLEXPORT void setBytes(const char* daten);
  31. //! Loescht den Array und erzeugt einen neuen
  32. //! \param daten Die Bytes, die kopiert werden sollen
  33. //! \param length Die naenge des Arrays
  34. DLLEXPORT void setBytes(const char* daten, int length);
  35. //! Loescht den Array und uebernimmt den uebergebenen ohne zu kopieren
  36. //! \param daten Der neue Byte Array
  37. //! \param length Die naenge 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 Laenge des Arrays zurueck
  62. DLLEXPORT int getLength() const;
  63. //! Gibt den Array von Bytes zurueck
  64. DLLEXPORT char* getBytes() const;
  65. };
  66. //! Kann Bytesequenzen mit bestimmten Schluesseln verschluesseln und
  67. //! entschluesseln
  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 Schluessel
  78. //! \param s Der Schluessel, der zum verschluesseln und entchluesseln
  79. //! verwendet werden soll \param length Die Laenge des Schluessels
  80. DLLEXPORT Key(const char* s, int length);
  81. //! Loescht das Zeichnung
  82. DLLEXPORT ~Key();
  83. //! Setzt die Position im Schluessel, wo mit dem verschluesseln und
  84. //! entschluesseln begonnen werden soll \param p Die Position im
  85. //! Schluessel
  86. DLLEXPORT void setPos(__int64 p);
  87. //! Setzt den Schluessel, der zum ver- und entschluesseln verwendet
  88. //! werden soll \param s Der Schluessel \param length Die Laenge des
  89. //! Schluessels
  90. DLLEXPORT void setKey(const char* s, int length);
  91. //! Verschluesselt einen Byte Array mit dem gesetzten Schluessel
  92. //! \param daten Der Byte Array, der verschluesselt werden soll. Wird
  93. //! von der Funktion veraendert
  94. DLLEXPORT void codieren(Bytes* daten);
  95. //! Entschluesselt einen Byte Array mit dem gesetzten Schluessel
  96. //! \param daten Der Byte Array, der entschluesselt werden soll. Wird
  97. //! von der Funktion veraendert
  98. DLLEXPORT void decodieren(Bytes* daten);
  99. };
  100. } // namespace Encryption
  101. } // namespace Framework
  102. #endif