Untitled
unknown
plain_text
a year ago
1.1 kB
7
Indexable
#include <stdio.h> #include <openssl/bn.h> int main() { BN_CTX *ctx = BN_CTX_new(); BIGNUM *p = BN_new(); BIGNUM *q = BN_new(); BIGNUM *n = BN_new(); BIGNUM *e = BN_new(); BIGNUM *d = BN_new(); BIGNUM *M = BN_new(); BIGNUM *C = BN_new(); // Given values BN_hex2bn(&n, "6887"); BN_dec2bn(&e, "143"); BN_dec2bn(&M, "1234"); // Calculate p and q (prime factors of n) BN_generate_prime_ex(p, 1024, NULL, NULL, NULL); BN_div(q, NULL, n, p, ctx); // Calculate phi(n) BIGNUM *phi_n = BN_new(); BN_sub(p, p, BN_value_one()); BN_sub(q, q, BN_value_one()); BN_mul(phi_n, p, q, ctx); // Calculate d (private key) BN_mod_inverse(d, e, phi_n, ctx); // Calculate C (ciphertext) BN_mod_exp(C, M, e, n, ctx); // Print the calculated values printf("Calculated d: %s\n", BN_bn2hex(d)); printf("Calculated C: %s\n", BN_bn2hex(C)); // Free memory BN_free(p); BN_free(q); BN_free(n); BN_free(e); BN_free(d); BN_free(M); BN_free(C); BN_free(phi_n); BN_CTX_free(ctx); return 0; }
Editor is loading...
Leave a Comment