Key.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #ifndef Key_H
  2. #define Key_H
  3. #include "Betriebssystem.h"
  4. namespace Framework
  5. {
  6. namespace Encryption
  7. {
  8. //! Speichert einen Array von bytes
  9. class Bytes
  10. {
  11. private:
  12. char *bytes;
  13. bool del;
  14. int length;
  15. int ref;
  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. //! Erhöht den Reference Counting Zähler.
  64. //! \return this.
  65. DLLEXPORT Bytes *getThis();
  66. //! Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht.
  67. //! \return 0.
  68. DLLEXPORT Bytes *release();
  69. };
  70. //! Kann Bytesequenzen mit bestimmten Schlüsseln verschlüsseln und entschlüsseln
  71. class Key
  72. {
  73. private:
  74. unsigned char *key;
  75. int length;
  76. int pos;
  77. int ref;
  78. public:
  79. //! Erzeugt ein leeres Zeichnung
  80. DLLEXPORT Key();
  81. //! Erzeugt ein neues Zeichnung mi einem Schlüssel
  82. //! \param s Der Schlüssel, der zum verschlüsseln und entchlüsseln verwendet werden soll
  83. //! \param length Die Länge des Schlüssels
  84. DLLEXPORT Key( const char *s, int length );
  85. //! Löscht das Zeichnung
  86. DLLEXPORT ~Key();
  87. //! Setzt die Position im Schlüssel, wo mit dem verschlüsseln und entschlüsseln begonnen werden soll
  88. //! \param p Die Position im Schlüssel
  89. DLLEXPORT void setPos( __int64 p );
  90. //! Setzt den Schlüssel, der zum ver- und entschlüsseln verwendet werden soll
  91. //! \param s Der Schlüssel
  92. //! \param length Die Länge des Schlüssels
  93. DLLEXPORT void setKey( const char *s, int length );
  94. //! Verschlüsselt einen Byte Array mit dem gesetzten Schlüssel
  95. //! \param daten Der Byte Array, der verschlüsselt werden soll. Wird von der Funktion verändert
  96. DLLEXPORT void codieren( Bytes *daten );
  97. //! Entschlüsselt einen Byte Array mit dem gesetzten Schlüssel
  98. //! \param daten Der Byte Array, der entschlüsselt werden soll. Wird von der Funktion verändert
  99. DLLEXPORT void decodieren( Bytes *daten );
  100. //! Erhöht den Reference Counting Zähler.
  101. //! \return this.
  102. DLLEXPORT Key *getThis();
  103. //! Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht.
  104. //! \return 0.
  105. DLLEXPORT Key *release();
  106. };
  107. }
  108. }
  109. #endif