this post was submitted on 04 May 2024
16 points (94.4% liked)

Rust

5981 readers
26 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

!performance@programming.dev

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] solrize@lemmy.world 7 points 6 months ago (1 children)

This is a pretty lame article. The idea is just use a bignum library, or a language with native bignums. While a few optimizations help, basically just generate random 1024 bit random numbers until you something that passes a pseudoprime test, and call it a day. The rest of the article converts the above into a beginning Rust exercise but I think it's preferable to not mix up the two.

From the prime number theorem, around 1/700th of numbers at that size are prime. By filtering out numbers with small divisors you may end up doing 100 or so pseudoprime tests, let's say Fermat tests (3**n mod n == 3). A reasonable library on today's machines can do one of those tests in around 1ms, so you are good.

RSA is deprecated in favor of elliptic curve cryptography these days anyway.

[–] farcaster@lemmy.world 11 points 6 months ago (1 children)

The author pointed out they also could've just called openssl prime -generate -bits 1024 if they weren't trying to learn anything. Rebuilding something from scratch and sharing the experience is valuable.

[–] solrize@lemmy.world 6 points 6 months ago (1 children)

There's two things going on in the exercise: 1) some introductory Rust programming; 2) some introductory math and crypto.

Maybe it's just me but I think it's better to separate the two. If you're going to do a prime number generation exercise, it will be easier in (e.g.) Python since the bignum arithmetic is built in, you don't have all the memory management headache, etc. If you're going to do a Rust exercise, imho it is better to focus on Rust stuff.

[–] farcaster@lemmy.world 4 points 6 months ago

There isn't even any memory management in their code. And arguably the most interesting part of the article is implementing a bignum type from scratch.