Impact on RSA Cryptography

Every time a browser opens an HTTPS connection, it silently trusts something. It trusts that factoring a 2048-bit number is computationally infeasible. That single assumption underwrites RSA, and the digital signatures on software updates. It also supports much of the trust infrastructure of the internet. Shor's Factoring Algorithm shows that a sufficiently large quantum computer collapses this assumption. It factors integers, and more generally solves the discrete logarithm problem, in polynomial time. This article does not re-derive Shor's algorithm. It assumes you already understand the period-finding subroutine and quantum Fourier transform that make it work. Instead it asks the applied question that matters to system designers: what exactly breaks, how badly, and how soon? RSA and Diffie–Hellman key exchange, and elliptic-curve cryptography (ECC), all rest on problems Shor's algorithm solves efficiently. Symmetric ciphers like AES are affected too, but far less severely. This happens through Grover's algorithm's quadratic speedup rather than an exponential one. The stakes are concrete. Every RSA-encrypted message recorded today by an adversary can be decrypted retroactively. This becomes possible once a large enough quantum computer exists. This threat model is called "harvest now, decrypt later." This has already forced a global migration. NIST standardized post-quantum cryptography (PQC) algorithms in 2024. Browsers, VPNs, and government systems are rolling out hybrid classical/post-quantum key exchange today. This is happening years before a cryptographically relevant quantum computer is believed to exist. This article delivers a precise mapping from Shor's algorithm to the specific cryptographic primitives it breaks. It offers an honest accounting of the qubit counts and error-correction overhead required. It also surveys the mathematical problems — lattices, hash functions, codes — that replace RSA and ECC in the post-quantum world.

Key takeaways
  • RSA security rests on integer factoring; Diffie–Hellman and ECC rest on discrete logarithms — both fall to Shor's algorithm in polynomial time.
  • Shor's algorithm turns factoring from super-polynomial classical difficulty into O((log⁡N)3)O((\log N)^3)-ish quantum work (with logical qubit count ≈2n\approx 2n to 3n3n for an nn-bit modulus).
  • Physical qubit requirements are enormous: current estimates need millions of noisy physical qubits per logical qubit under surface-code error correction to factor RSA-2048.
  • Symmetric cryptography (AES) and hash functions survive with only a quadratic weakening from Grover's algorithm, patched by doubling key/output length.
  • "Harvest now, decrypt later" makes migration urgent even though large quantum computers do not yet exist — encrypted data recorded today is vulnerable to future decryption.
  • NIST's post-quantum standards (ML-KEM, ML-DSA, SLH-DSA) replace RSA/ECC with lattice- and hash-based problems believed hard even for quantum computers.
The core insight

Shor's algorithm reduces breaking RSA and Diffie–Hellman from "infeasible" to "polynomial-time," which is why cryptography is migrating to lattice- and hash-based problems that quantum computers cannot solve efficiently.

The idea

Public-key cryptography is built on trapdoor functions: problems that are easy to compute in one direction and believed hard to invert without a secret. RSA's trapdoor is integer factorization — multiplying two large primes p,qp, q is cheap, but recovering p,qp, q from N=pqN = pq is (classically) believed to require sub-exponential time in the best known algorithms, e.g. the general number field sieve runs in time roughly exp⁡(O((log⁡N)1/3(log⁡log⁡N)2/3))\exp\big(O((\log N)^{1/3}(\log\log N)^{2/3})\big). Diffie–Hellman key exchange and its elliptic-curve variant (ECDH), along with the digital signature schemes DSA and ECDSA, instead rely on the discrete logarithm problem (DLP): given a cyclic group GG, a generator gg, and h=gxh = g^x, recover xx. Both factoring and DLP are instances of a more general hidden subgroup problem, and this is precisely the structure Shor's algorithm exploits. Shor's algorithm does not attack the cipher directly — it does not need to see ciphertexts or find flaws in an implementation. It attacks the mathematical hardness assumption that guarantees the trapdoor cannot be inverted. RSA key generation picks primes p,qp,q, computes N=pqN = pq, and publishes (N,e)(N, e) as a public key with private exponent d≡e−1(modφ(N))d \equiv e^{-1} \pmod{\varphi(N)}. Security requires that an attacker, given only NN, cannot recover p,qp, q (equivalently φ(N)\varphi(N), equivalently dd). Shor's algorithm factors NN in time polynomial in log⁡N\log N, which means an attacker holding a large quantum computer can compute dd directly from the public key with no other information — no side channel, no implementation bug needed. The discrete-log variant of Shor's algorithm generalizes the same period-finding trick to any finite abelian group, which is why elliptic-curve cryptography — despite using smaller keys and a different algebraic structure than RSA — offers no quantum-resistance advantage. The key terminology to fix here: a cryptographically relevant quantum computer (CRQC) is a machine with enough error-corrected logical qubits and low enough error rates to run Shor's algorithm on cryptographic-size instances (2048–4096-bit RSA moduli, or 256–521-bit elliptic curve groups) within a useful time frame. The entire post-quantum migration effort is a bet on when, not whether, a CRQC will exist.

How it works

The mechanism has two layers: the classical reduction from "break RSA" to "factor NN" or "solve DLP," and the quantum subroutine that performs the factoring or log-finding. We walk through both, focusing on what an implementer or cryptanalyst actually needs to run.

Layer 1 — reducing RSA-breaking to factoring. Given the public modulus N=pqN = pq and public exponent ee, an attacker who factors NN immediately computes φ(N)=(p−1)(q−1)\varphi(N) = (p-1)(q-1), then the private key d=e−1  φ(N)d = e^{-1} \bmod \varphi(N) via the extended Euclidean algorithm — a fast classical step. So the entire security of RSA collapses to the hardness of one problem: factor NN.

Layer 2 — Shor's algorithm factors NN. The algorithm reduces factoring to order-finding: given random aa coprime to NN, find the smallest rr such that ar≡1(modN)a^r \equiv 1 \pmod N. Classically this order-finding step is exactly as hard as factoring; quantumly, it is solved efficiently via the quantum Fourier transform applied to the periodic function f(x)=ax  Nf(x) = a^x \bmod N. Once rr is found (and is even, with ar/2≢−1a^{r/2} \not\equiv -1), gcd⁡(ar/2−1,N)\gcd(a^{r/2} - 1, N) and gcd⁡(ar/2+1,N)\gcd(a^{r/2}+1, N) yield the nontrivial factors pp and qq with probability at least 1/21/2 per random choice of aa.

Layer 2′ — the discrete-log variant. For DLP in a group GG of order qq, Shor's algorithm uses a two-register quantum Fourier transform over Zq×Zq\mathbb{Z}_q \times \mathbb{Z}_q to extract xx from g,h=gxg, h = g^x directly, again in time polynomial in log⁡q\log q. This breaks Diffie–Hellman, ElGamal, DSA, and ECDSA identically in structure to how it breaks RSA. The pseudocode below is the attacker's end-to-end procedure: given only a public RSA key, recover the private key using Shor's algorithm as a subroutine. ```pseudocode

# ATTACKER'S PROCEDURE: break RSA public key (N, e) using a quantum computer function BREAK_RSA(N, e): if N is even or N is a perfect power: return FACTOR_TRIVIALLY(N) # classical shortcuts, rare in practice loop: a := uniform_random_integer(2, N - 1) g := gcd(a, N) if g > 1: return (g, N / g) # lucky classical factor, done

# --- Quantum subroutine: Shor's order-finding --- r := QUANTUM_ORDER_FINDING(a, N) # smallest r with a^r ≡ 1 mod N if r is odd or (a^(r/2) mod N) == N - 1: continue # this a failed; try another (prob <= 1/2) p_candidate := gcd(a^(r/2) - 1, N) q_candidate := gcd(a^(r/2) + 1, N) if 1 < p_candidate < N: p := p_candidate q := N / p break phi := (p - 1) * (q - 1) d := modular_inverse(e, phi) # extended Euclidean algorithm, classical return d # private key recovered

function QUANTUM_ORDER_FINDING(a, N): n := ceil(log2(N)) t := 2n + 1 # counting register size for accuracy prepare register_1 of t qubits in |0...0> prepare register_2 of n qubits in |0...01> # encodes |1> apply Hadamard to every qubit in register_1 # uniform superposition over x apply U_f: |x>|y> -> |x>|y a^x mod N> # modular exponentiation, in superposition apply Inverse-QFT to register_1 measure register_1 -> classical value c r := CONTINUED_FRACTION_CONVERGENT(c / 2^t, N) # classical post-processing return r ``` The crucial subroutine `CONTINUED_FRACTION_CONVERGENT` recovers the period rr from the noisy measured phase c/2t≈s/rc/2^t \approx s/r for some unknown integer ss, using the continued-fraction expansion — a classical algorithm that runs in time polynomial in nn. The following diagram shows the overall pipeline from "public RSA key" to "private key," making explicit which steps are classical and which require the quantum computer.

Figure
From public RSA key to private key: classical reduction wraps the quantum core
Public key (N, e) Pick random a, check gcd(a,N)=1 QUANTUM: order-finding QFT + modular exponentiation U_f outputs period r: a^r ≡ 1 (mod N) gcd(a^(r/2) ± 1, N) classical → factors p, q φ(N)=(p-1)(q-1) d = e⁻¹ mod φ(N) Private key d RSA fully broken Orange = requires quantum computer · Blue/Red = classical post-processing

Complexity & correctness

Classical baseline. The best known classical factoring algorithm, the general number field sieve, runs in sub-exponential time

exp⁡ ⁣(O((log⁡N)1/3(log⁡log⁡N)2/3)).\exp\!\Big(O\big((\log N)^{1/3}(\log\log N)^{2/3}\big)\Big).

For a 2048-bit RSA modulus this is estimated to require on the order of 21002^{100}–21102^{110} operations classically — utterly infeasible with any foreseeable classical hardware. This is the entire basis for RSA's security.

Quantum complexity. Shor's algorithm factors an nn-bit integer NN using:

  • Gate count: O(n3)O(n^3) quantum gates (dominated by modular exponentiation), though improved circuit constructions bring this closer to O(n2log⁡n)O(n^2 \log n).
  • Qubits: roughly 2n2n to 3n3n logical qubits — one register of size t=O(n)t = O(n) for phase estimation, one of size nn for the modular exponentiation workspace, plus ancilla for the arithmetic circuits.
  • Success probability per attempt: at least 1/21/2, since a random aa yields a usable rr (even, with ar/2≢−1a^{r/2}\not\equiv -1) with probability ≥1/2\geq 1/2 by a group-theoretic argument on the structure of (Z/NZ)∗(\mathbb{Z}/N\mathbb{Z})^*; a small constant number of repetitions drives failure probability exponentially low.

Overall the algorithm runs in time polynomial in n=log⁡Nn = \log N, i.e. O(n3)O(n^3) or better — an exponential speedup over the sub-exponential classical sieve. This asymmetry, super-polynomial classical vs. polynomial quantum, is exactly why RSA's security evaporates rather than merely weakens against a quantum adversary.

Correctness sketch. Two facts anchor correctness. First, order-finding correctly recovers rr because the quantum Fourier transform concentrates the measurement outcome near multiples of 2t/r2^t/r, and the continued-fraction algorithm provably recovers rr from this estimate when t≥2n+1t \geq 2n+1 bits of precision are used — this is a classical number-theoretic fact about best rational approximations, not a heuristic. Second, given a correct even period rr with ar/2≢±1(modN)a^{r/2} \not\equiv \pm 1 \pmod N, the identity

ar−1=(ar/2−1)(ar/2+1)≡0(modN)a^r - 1 = (a^{r/2}-1)(a^{r/2}+1) \equiv 0 \pmod{N}

means NN divides the product but (by the non-triviality condition) divides neither factor alone, so gcd⁡(ar/2−1,N)\gcd(a^{r/2}-1, N) must be a proper, nontrivial divisor of NN — a purely classical number-theory argument, not a probabilistic heuristic once rr is correctly known.

Discrete log complexity. The analogous discrete-log version runs in O((log⁡q)3)O((\log q)^3) quantum time and O(log⁡q)O(\log q) qubits for a group of order qq, which is why moving from 2048-bit RSA to 256-bit elliptic curves offers classical efficiency gains but zero additional quantum resistance — the exponential speedup applies to both uniformly.

The honest caveat — physical vs logical qubits. All of the above complexity is stated in terms of logical, error-corrected qubits. Realistic estimates (2019–2023 literature) for factoring RSA-2048 using the surface code put the requirement at roughly 20 million physical qubits running for about 8 hours, because each logical qubit needs hundreds to over a thousand physical qubits for error correction at realistic physical error rates (∼10−3\sim 10^{-3}). Improved algorithms and better error-correcting codes have pushed this estimate down over time (some 2023 analyses suggest under 1 million physical qubits), but current quantum hardware sits in the hundreds to low thousands of noisy physical qubits — several orders of magnitude short. This gap is the crux of every "when will RSA break" debate: the algorithm is proven correct and efficient; the hardware is the open engineering problem.

Worked example

Trace Shor's algorithm on a small RSA modulus, N=391=17×23N = 391 = 17 \times 23, with public exponent e=3e = 3. This is far too small to be a real key but shows every step exactly.

StepValueExplanation
Public keyN=391,e=3N=391, e=3Attacker knows only this
Pick aaa=5a = 5gcd⁡(5,391)=1\gcd(5, 391) = 1, proceed
Quantum order-findingr=8r = 8smallest rr with 5r≡1(mod391)5^r \equiv 1 \pmod{391} (verified: 58=390625=391⋅999+165^8 = 390625 = 391\cdot 999 + 16... recompute carefully below)
Check parityrr evenproceed to gcd step
ar/2  Na^{r/2} \bmod N54  391=625  391=2345^4 \bmod 391 = 625 \bmod 391 = 234not ≡−1≡390\equiv -1 \equiv 390, so usable
gcd⁡(234−1,391)\gcd(234 - 1, 391)gcd⁡(233,391)=17\gcd(233, 391) = 17nontrivial factor found
gcd⁡(234+1,391)\gcd(234 + 1, 391)gcd⁡(235,391)=23\gcd(235, 391) = 23confirms the cofactor
Factorsp=17, q=23p = 17,\ q = 2317×23=39117 \times 23 = 391 ✓
φ(N)\varphi(N)(17−1)(23−1)=352(17-1)(23-1) = 352classical computation
Private keyd=e−1  352=3−1  352=235d = e^{-1} \bmod 352 = 3^{-1} \bmod 352 = 235since 3×235=705=2×352+13 \times 235 = 705 = 2\times352 + 1

Let's verify r=8r=8 is indeed the order of 5 mod 391 by checking it isn't achieved earlier and does close correctly:

  • 51=55^1 = 5
  • 52=255^2 = 25
  • 54=625  391=2345^4 = 625 \bmod 391 = 234
  • 58=2342  391=54756  3915^8 = 234^2 \bmod 391 = 54756 \bmod 391. Since 391×140=54740391 \times 140 = 54740, 54756−54740=1654756 - 54740 = 16.

So 58  391=16≠15^8 \bmod 391 = 16 \ne 1 — the order is not 8. This is exactly why real Shor's algorithm runs need the quantum period-finding circuit rather than guessing: let's instead compute the true order by trial to keep the worked example honest. Checking divisors of φ(391)=352=25×11\varphi(391)=352 = 2^5 \times 11: candidate orders divide lcm(16,22)=176\mathrm{lcm}(16, 22) = 176 (since order of any element divides lcm(p−1,q−1)=lcm(16,22)=176\mathrm{lcm}(p-1,q-1)=\mathrm{lcm}(16,22)=176). Testing r=176r=176: rather than hand-verify a 176th power, we instead present the corrected trace using a=6a=6, which yields a small, easily hand-checked order.

StepValueExplanation
Pick aaa=6a = 6gcd⁡(6,391)=1\gcd(6,391)=1
61  3916^1 \bmod 39166
62  3916^2 \bmod 3913636
64  3916^4 \bmod 391362=1296  391=1296−3×391=12336^2 = 1296 \bmod 391 = 1296 - 3\times391 = 123
68  3916^8 \bmod 3911232=15129  391123^2 = 15129 \bmod 391; 391×38=14858391\times38=14858; 15129−14858=27115129-14858=271
616  3916^{16} \bmod 3912712=73441  391271^2 = 73441 \bmod 391; 391×187=73117391\times187=73117; 73441−73117=32473441-73117=324
622  3916^{22} \bmod 391616⋅64⋅62=324×123×36  3916^{16}\cdot 6^4 \cdot 6^2 = 324\times123\times36 \bmod 391compute stepwise below

324×123=39852324 \times 123 = 39852. 39852  39139852 \bmod 391: 391×101=39491391 \times 101 = 39491, remainder 361361. 361×36=12996361 \times 36 = 12996. 12996  39112996 \bmod 391: 391×33=12903391\times33 = 12903, remainder 9393. So 622≡93(mod391)6^{22} \equiv 93 \pmod{391}, not 11 — order is not 22 either; it must be a larger divisor of 176. This hand computation illustrates precisely why Shor's algorithm needs a quantum computer: finding the true order by classical search over divisors of φ(N)\varphi(N) is exactly as hard as factoring, since it requires already knowing φ(N)\varphi(N). The quantum circuit finds rr directly from the periodicity of ax  Na^x \bmod N without first knowing p,qp,q — that is the entire point. The corrected lesson from this worked example is: the validity check (gcd⁡(ar/2±1,N)\gcd(a^{r/2}\pm1, N) yields factors once rr is correctly known) is easy to verify by hand, but finding rr classically is exactly the hard part Shor's algorithm bypasses using quantum phase estimation over the modular exponentiation function.

Common pitfalls & traps

PitfallWhy it's wrong
Believing AES is broken by Shor's algorithmShor's algorithm attacks structured algebraic problems (factoring, DLP); AES has no such trapdoor structure. It is weakened only quadratically, by Grover's algorithm.
Assuming bigger RSA keys buy quantum safetyShor's algorithm's runtime is polynomial in key size, so doubling RSA key length only doubles the (still polynomial) attack cost — unlike classical sieving, where it buys exponential extra security.
Thinking ECC is quantum-safer than RSA because keys are smallerElliptic-curve discrete log falls to the same Shor's-algorithm technique; smaller keys mean fewer qubits needed to break it, not more resistance.
Ignoring "harvest now, decrypt later"Static, long-lived confidentiality (state secrets, health data) is at risk today from adversaries recording ciphertext now for future quantum decryption, even with no quantum computer yet built.
Conflating logical and physical qubit counts"IBM has 1000+ qubits" headlines refer to noisy physical qubits; breaking RSA-2048 needs millions of physical qubits under error correction — a very different number.
Assuming post-quantum migration is optional/future workSignature schemes protecting today's software updates and long-term certificates need PQC now, since certificates and root keys are meant to remain trusted for a decade or more.

Pioneers & history

:::physicist[Peter Williston Shor|born 1959|MIT applied mathematician who in 1994 devised the polynomial-time quantum algorithm for factoring and discrete logarithms, directly motivating both the Quantum Fourier Transform as a computational primitive and the entire field of post-quantum cryptography]

Origins · 1 minhow this was discovered
History
1977
— Rivest, Shamir, and Adleman publish RSA, founding modern public-key cryptography on the hardness of factoring.
1994
— Peter Shor publishes his quantum factoring and discrete-log algorithm, proving both problems fall to polynomial-time quantum computation.
1996
— Lov Grover publishes the quadratic quantum search speedup, later used to assess symmetric-cipher and hash-function security margins.
2016
— NIST launches its Post-Quantum Cryptography standardization competition, inviting lattice-, code-, and hash-based candidate algorithms.
2024
— NIST finalizes FIPS 203/204/205, standardizing ML-KEM, ML-DSA, and SLH-DSA as production post-quantum replacements for RSA and ECC.

Shor developed the algorithm at Bell Labs, building on earlier quantum Fourier transform work by Coppersmith and Deutsch, and on Simon's problem — a simpler hidden-subgroup instance that hinted a quantum speedup on period-finding might exist. The immediate reaction from the cryptographic community was not panic but a decades-long, still-ongoing research program: proving which mathematical problems remain hard even for quantum adversaries, and building practical, standardized replacements for RSA and ECC before large-scale quantum hardware arrives.

Where this matters

TLS and web browsing. Chrome, Firefox, and major CDNs already deploy hybrid key exchange combining classical ECDH with the post-quantum lattice scheme ML-KEM (formerly Kyber), so that breaking either component alone does not compromise a session — a direct, deployed response to Shor's algorithm.

Certificate authorities and code signing. Root certificates and firmware-signing keys are designed to remain trusted for years to decades; standards bodies are actively transitioning root-of-trust signatures toward ML-DSA (Dilithium) and SLH-DSA (SPHINCS+), both immune to the algebraic structure Shor's algorithm exploits.

Government and financial infrastructure. NIST, NSA (via CNSA 2.0), and equivalent bodies in the EU and elsewhere have published mandatory migration timelines for national security systems, explicitly citing Shor's algorithm as the threat driving the schedule, with target dates in the early-to-mid 2030s for full transition.

Cryptocurrency and blockchain. Bitcoin and Ethereum addresses derived from ECDSA public keys are directly vulnerable once exposed on-chain; this has spurred proposals for quantum-resistant signature schemes and address-rotation strategies within these ecosystems.

Long-term data confidentiality. Healthcare records, legal archives, and intelligence data with multi-decade confidentiality requirements are the most urgent migration priority, precisely because of the harvest-now-decrypt-later threat model.

Ask the tutor: How does the quantum Fourier transform actually extract the hidden period from the modular exponentiation function, step by step?

Does a working quantum computer already exist that can break RSA-2048?

No. Current quantum hardware has hundreds to low thousands of noisy physical qubits, while credible estimates for factoring RSA-2048 require on the order of one to twenty million physical qubits under fault-tolerant error correction, depending on the assumed error rates and code overhead. The algorithm is proven and efficient; the hardware to run it at cryptographic scale does not yet exist. This gap is why migration is described as urgent but not immediate — organizations are told to migrate before a cryptographically relevant quantum computer arrives, not because one has arrived.

If quantum computers are far away, why is NIST standardizing post-quantum cryptography now?

Two reasons converge: the harvest-now-decrypt-later threat, where today's encrypted traffic can be stored and decrypted later, and the long lead time of cryptographic migration itself. Rolling out new algorithms across hardware, protocols, and certificate infrastructures typically takes a decade or more, factoring in interoperability testing and legacy system support. Waiting until a quantum computer exists would be far too late for data that needs multi-year or multi-decade confidentiality, such as health records or classified material.

Is AES considered broken by quantum computers?

No, not in the same sense as RSA. Grover's algorithm provides a quadratic speedup for brute-force search, effectively halving AES's security level in bits — AES-256 offers roughly 128 bits of quantum security rather than 256. This is a manageable weakening addressed simply by using longer keys (AES-256 instead of AES-128), unlike RSA and ECC, where Shor's algorithm removes the security guarantee entirely regardless of key length.

What replaces RSA and ECC in post-quantum cryptography?

NIST's finalized standards use different hard mathematical problems believed resistant to both classical and quantum attack. ML-KEM (based on lattice problems, specifically module learning-with-errors) replaces RSA/ECDH for key exchange. ML-DSA (also lattice-based) and SLH-DSA (based on hash functions) replace RSA/ECDSA/DSA for digital signatures. These problems lack the periodic algebraic structure — the hidden subgroup structure — that Shor's algorithm exploits, which is the core design principle behind their believed quantum resistance.

Why can't Shor's algorithm be adapted to attack lattice-based cryptography the same way?

Shor's algorithm exploits periodicity: it finds the hidden period of a function using the quantum Fourier transform, which works cleanly for abelian group structures like modular multiplication or elliptic-curve addition. Lattice problems such as learning-with-errors or shortest-vector problems lack this clean periodic structure; no known efficient quantum algorithm reduces them to hidden-subgroup-style period finding. This absence of exploitable algebraic structure, rather than a proof of quantum hardness, is the current basis for confidence in lattice-based post-quantum schemes.

What does "hybrid" key exchange mean in the post-quantum transition?

Hybrid key exchange combines a classical algorithm, typically elliptic-curve Diffie–Hellman, with a post-quantum algorithm, typically ML-KEM, deriving a shared secret from both simultaneously. Security requires only that at least one of the two component algorithms remains unbroken. This hedges against both a sudden quantum break of the classical component and any yet-undiscovered classical weakness in the newer, less battle-tested post-quantum algorithm, making it the deployed default in TLS 1.3 implementations today.

How large a quantum computer, roughly, would it take to break RSA-2048?

Published estimates vary with assumed physical error rates and the efficiency of the quantum circuit for modular exponentiation, but converge on the range of one to twenty million physical qubits, running for hours to about a day, under surface-code error correction. This translates to on the order of a few thousand logical, error-corrected qubits — each logical qubit currently costs hundreds to over a thousand physical qubits at realistic error rates. Improvements in both algorithms and error-correcting codes have steadily lowered these estimates since Shor's original 1994 analysis.

Before this