Криптографія з відкритим ключем, різновидності алгоритм