/* *c1=g^kc2=m*y^k
*/ if (!BN_mod_exp(c1, g, k, p, tmp)) goto err; if (!BN_mod_exp(yk, y, k, p, tmp)) goto err; if (!BN_mod_mul(c2, m, yk, p, tmp)) goto err;
/* result */
*c1_p = bn_to_mpi(c1);
*c2_p = bn_to_mpi(c2); if (*c1_p && *c2_p)
res = 0;
err: if (tmp)
BN_CTX_free(tmp); if (c2)
BN_clear_free(c2); if (c1)
BN_clear_free(c1); if (yk)
BN_clear_free(yk); if (k)
BN_clear_free(k); if (y)
BN_clear_free(y); if (g)
BN_clear_free(g); if (p)
BN_clear_free(p); if (m)
BN_clear_free(m); return res;
}
/* *m=c2/(c1^x)
*/ if (!BN_mod_exp(c1x, c1, x, p, tmp)) goto err; if (!BN_mod_inverse(div, c1x, p, tmp)) goto err; if (!BN_mod_mul(m, c2, div, p, tmp)) goto err;
/* result */
*msg_p = bn_to_mpi(m); if (*msg_p)
res = 0;
err: if (tmp)
BN_CTX_free(tmp); if (m)
BN_clear_free(m); if (div)
BN_clear_free(div); if (c1x)
BN_clear_free(c1x); if (x)
BN_clear_free(x); if (p)
BN_clear_free(p); if (c2)
BN_clear_free(c2); if (c1)
BN_clear_free(c1); return res;
}
/* *c=m^e
*/ if (!BN_mod_exp(c, m, e, n, tmp)) goto err;
*c_p = bn_to_mpi(c); if (*c_p)
res = 0;
err: if (tmp)
BN_CTX_free(tmp); if (c)
BN_clear_free(c); if (n)
BN_clear_free(n); if (e)
BN_clear_free(e); if (m)
BN_clear_free(m); return res;
}
/* *m=c^d
*/ if (!BN_mod_exp(m, c, d, n, tmp)) goto err;
*m_p = bn_to_mpi(m); if (*m_p)
res = 0;
err: if (tmp)
BN_CTX_free(tmp); if (m)
BN_clear_free(m); if (n)
BN_clear_free(n); if (d)
BN_clear_free(d); if (c)
BN_clear_free(c); return res;
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-08-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.