Есть ассиметричные алгоритмы шифрования. Они имеют 2 ключа (пароля). То что зашифровано одним ключём, можно расшифровать другим ключём.
Для создания электронной подписи, вы сначала генерируете пару ключей. Один из них вы объявляете "закрытым", а другой "открытым".
Далее "открытый" ключ относите в удостоверяющий центр. Удостоверяющий центр предоставляет ваш открытый ключ всем желающим, и подтверждает, что это именно ваш ключ.
Далее считаете хэш (это что-то вроде контрольной суммы) документа, который хотите подписать. И этот хэш шифруете закрытым ключём. Это и будет электронная подпись.
Тогда любой желающий может проверить вашу подпись под документом. Для этого он должен самостоятельно посчитать хэш этого документа.
Далее расшифровать вашу электронную подпись открытым ключём, полученным из удостоверяющего центра. Если подпись расшифровывается вашим открытым ключём, это значит, что подписывали именно вы.
Извлечь из неё хэш, который посчитали вы, и сравнить его со своим. Если хэш из электронной подписи будет равен хэшу, который посчитал проверяющий, это значит, что вы подписывали именно этот документ. Если хэши разные, значит документ, как минимум, был изменён после подписания. И ваша подпись под ним недействительна.