Die Sitzungsschlüssel-Verschlüsselungs- und -Entschlüsselungsverfahren encrypt_local_key und decrypt_remote_key werden im Modul get_common_key aufgerufen. Beide Vorgänge werden in Extra Systems Cypher Net über dieselbe Funktion long_power_mod (Potenzierung) ausgeführt, nur dass sie unterschiedliche RSA-Schlüssel verwenden: Die Verschlüsselung erfolgt mit Ihrem privaten Schlüssel und die Entschlüsselung mit dem öffentlichen Schlüssel des Partners.
typedef struct session_key_item
{
unsigned char packed[PACKED_VALUE_LENTH];
unsigned char unpacked[VALUE_LENTH];
} SESSIONKEYITEM;
SESSIONKEYITEM local_key, remote_key, common_key;
unsigned char crypted_local_key[PACKED_VALUE_LENTH], crypted_remote_key[PACKED_VALUE_LENTH];
void encrypt_local_key(void)
{
unsigned char crypted_value[VALUE_LENTH];
long_power_mod(local_key.unpacked, encrypt_rsa_key.exponent, encrypt_rsa_key.modulus, crypted_value);
pack_value(crypted_value, crypted_local_key);
}
void decrypt_remote_key(void)
{
unsigned char crypted_value[VALUE_LENTH];
unpack_value(crypted_remote_key, crypted_value);
long_power_mod(crypted_value, decrypt_rsa_key.exponent, decrypt_rsa_key.modulus, remote_key.unpacked);
pack_value(remote_key.unpacked, remote_key.packed);
}
Den Operationsalgorithmus der Prozeduren pack_value und unpack_value finden Sie hier.
Der Inhalt dieser Seite ist auch in Englisch, Französisch, Portugiesisch, Spanisch, Italienisch, Ukrainisch und Russisch verfügbar.
| © Extra Systems, 2024 |
|