Post
Topic
Board Development & Technical Discussion
Re: Can Anyone Consistently Solve This Key Comparison Challenge?
by
bjpark
on 01/09/2025, 02:45:11 UTC
It is not possible to reverse all public keys, but with my special program, I can determine 100% whether the result is "over" or "under." Please try creating a challenge. After running the program, just post the part of the output starting from
--- Public Keys for Each Challenge ---
and I will predict whether it is "over" or "under" within one hour.
I want to emphasize once again: not every public key in existence can be solved, but with the program I provided, it seems possible to do so.

Here is a sorted list of 100 randomly-generated compressed public keys. Exactly 50 have private keys that are less than your constant and exactly 50 have private keys that are greater. So, if you do not get 50/50, you will know something is wrong.

Good luck!

Code:
0200a7292bf092f79ddc6a01082a01247dece9087a29888ffb9d4065c81355448c
020221c0a9ddedd38aa4d0c64493fd9b23a0ece2540453079ad3a20a231b2f34cd
0204beb787dca4a5a97b1c958ba7917fa17974767ce2b3dd3254fe3f8f80c8e267
0210a476162b60df310bae5dff1f9f3b47d384b457c27cc3717769bd2a14081efb
021cbb4fbf1f845c82df0ef3192100c33d17d814bc119e016a309aebda3b69fc2d
023994e6ccdc8d461c744e571113094333d5e6d872eb88b9fe9cd8b436864ef1bc
0240362df0588f6da11f1498c0c6a2f57211ed00cc52959f2d48527c57ef410f71
024161dd8354bf4b77f3706d9b1fa915ff71dacbb310b93efa68570e033c83465e
0248dc4e64a484130ca838b347171cdd30fd45725f3fa37f38f654bd779db56b71
02573ebf129f3179dbea9aa2ed024b40929b5d40e7179c4d1f63f5494e161b740c
025d167468b133ae274fb56c80211f15998d31fc0da4129953acd715be5b94a8c6
02602ea31b8594fa26dfacf2df55396fa0c540a7a35db00a54d8a6687216816418
0263864add64ad36078b4f7161132f65767e4d4354b4b38782ad0da80bb7d5bb1d
026b257d946666248dfc97e20f20a7a874f6a6abdef40404388c5ef63c982c57cb
026cb77fc3287d9864e2c32998c6bb4932bb43eee6061b72790ee49b7b47f8e47e
026f90a0a7e6875110e29634f16399b08904c989faa3c4c511d3476f94d7d1afb3
0270c36704e3a73b340c008b1844f61f3a2d62c0f366dcc8c02e64dee2e012665b
0270f214f7d98f0ba1b0fbb140edad24630c67b74f153365e1a975e66aede1b4c1
0272f6b61333144fc4c8414f75076f3c4a9fa47724d99d71353f2f70446b897c0f
0275e8e9a3ef728802896339a130ea5cc025e4bbda860898ab2b57002efc8a8864
0278d0ccf06aa43ef49b3a69ed3747457f7461396a5586598d33d5ef07cc6c6d02
02792e3abf960613411078939d2c41409e7754b8756bc281e4a9c539387b044e29
027d2775c3da70bda01c7ab441ed97b1b951bcfd03c89d7e9fe591464101e01f83
0297f15cd9e38aa1af0cf88e479461fa4b710b9c361f93b234622ed428c2c47830
02987a4232c1d549fa0d6172c7ac7fa4ccfb0a50277b0c0ad9ba25106ff24ee10c
02993323b5a500cee05560deec9750dee5d4f9bce5ba060ff6d40b4fc78df8e623
029f1cf761578f6c08eba8e15939ee94fc9eb0838bd18960f5b9766033533035f9
02a31dcd46673fa6001113e6ccb444f734250804a4447af1ab37d8802d50a72b46
02a75f5a7589a3f7734d98ac29026bd9b02506da541c7bc263c3d3f71b66896720
02a8761bfbb1092327945ae4ef282dd4a7bb796f4ef26da606437ef5cf4a39b23a
02acae5f4b5fab7f49e73b7853f61fbe1c51cc81a73e725ad6ea0e6413765a0661
02b100d6f7b3a0c0bcb1932201a9154e8f17be609dbb076202153841fc6817834a
02b226065238eb185c190d66143f84abda2f8190319bedafc0a7f292cdfeb3cb8b
02bd2e68b08e7074b23fa1ef83c87732711ccb71c23d268d6d9d41c53f4bd34bfd
02be91e5240ae0334aae920d033cd275c36d8f8da0fc03ad8bcfc8c7d725c39b26
02beefd4cb447bfff6475cc3411b36371e514a5aa1c79a6f6c9d5e15eeae95436e
02c40665450cac7f40d39d56bd9763c2d5164deec12559f1e78777b72d3e61ae60
02c91cef176937e721ee88aced1190a1cd52561b7e81459dd55236ad7004eb195c
02cb8a629ee1545521f6dc6defd3b3292d1de774e23246882272d14952a62ca984
02ce768308d0025269cf88449e618bd36031fc71e7634ee1dc799fd589e1295a67
02d04ebdfcd7f0cfb3f439ce1bdbd7461dc8baf4c7006a07e738478349e6c92e4e
02d998779f151d8749cda008b9c483554568e93a272994c93e841f31153a514661
02e09d6b450fa4421fd614918d480ad02a97c0ddafb73f9b6a57182e80606a31ec
02e479682fc6304b1458453e2875206f4abf7a6f3a8ea33ba42481b000ac1dbd8a
02e5117955b26608619b578d816925b5ddbfb971056cd50830181afe410363ba10
02e7b6ad7e129835e768bbb52dd8a22f6d0379f9e69bc8f430030434e32aa44253
02eae440a99bdb12ae49b030dba2d9fd89dd6fbab9edaf43f04f82afa79566b882
02f6cbed04a22938c6aefada89fdf70441f1d71b411ce8452d05cbce1fcc261a6c
030243bf27fecac10bcb406ab7c288f1b56c43a8a8a1b8b968d3e210d3e7dee7a2
03026a1fb37d227333fc8ef85bbcdc9a894a692a27f0412ceed884aef5aeff3c80
03043ef94d9b2e78d3698a4e6fabac58acb26244b3958b5a4c4246a60f95158280
030d5413e29ae02ed804f9059fce739c1bb822bba32b498c00796ac6ad72fa69aa
030e38cdf39d6eee9be1e890fcf99644c04c53f74d65494fc0b3d4b65d2e7764fd
031446a778793e158352f2f03851c6347f48688434cd449eeb37c1045b58019b1a
031adad82647ea25fb7a77050e55bb9a053b91ea9526c4d0f2d218395610e67b88
031dd68bbf0fcaa551c809f81d9e5075cdaa3bf9384fa7a46690aeefc47cc4b3d1
03203e555cf3c0f1eb0257f3850e0261925ad178ec2157321c9150026312d7108c
03250b715a5e2146e7b7104a3f439d377c7cb3cf9a9a30f8f239b6c3b7cbdb062f
0327861d080b880495e99861f9d806ae7b8568f30759b4dea34e43cd3ec6b72025
032d910b1c3a79d383b94369682cc12e940ac8969b8d7a4f0fb610302f80ff1d22
032e0035b68365e46a8fe66a38325620e8de14bd31b4aaa90e1e771dad0764e643
033f1773d07840960e3e6d7cc454acfa926e1d54d09b16377bf796fa63de60631a
034229257808c3f9556e6f7d84fc8186e636f7ae924d988f72a996d77b350ac606
03431d565c45c4dc50ef4e3806cc22d815899e37d0eb5937216ad519229259f17a
0348ae37cb3eacf2014b26d9a49ee60f17bdf4a79a59906f447f6c14d12d70e686
034b0e30dd10f72b0894a465fa5898a3b593042dd29649b94f96fe0c3fbffd99df
034d52c00b9b622ff4c825c5f2fb553443dbbe524ad868db785c68c1fe183f6f58
034db256191a4cfd00b34b6e0c5a5a245b0eb3935f3553f263d6956b9699e51e73
03513593bacf05a6ad4f989b573b90f1eedfd0f885eeb2a6b914c013a3dfbb2d57
035266d0eaf4a64e9e76b0c74275b0238831203fe060eefa71977803228c61b165
0357aaf170594fdc7e506e381d08dba5f6671326508fd2c6276c1d27a7f49ad784
0359572ce3fe2111fd11e29e3c2204c37fe210c9dfe4f631bbac1bf24ed3236ee1
03616f76934cf4bbb56d7c3140ab1f799b85b2fefdea216f8ed0489e2fb8e51cce
03643db82169061109883bf42e3b84831f45311592e5593e75217a58b105109a8b
037af065b34f12bdce8bbf11a97d469c91e432beafabe131a20ec25ca257c7ad7b
03858c533cf3e62ac0a158e74ba3aa21daafbb4451d57f419f325a82ba116ca306
03867bf5bef5991654c6bbde40c0acff54471fa52a42210238bc1355ce64180f22
0388fda363334540f781191eed5b78211150d3a0831491757c8fb75b7e6ddb86f0
039810deafb9b7dc00554c3fcfe951b908a7e31a2ca04df74cf9b0766bbba8c57b
039a7f5021b6c24e2a7a0198613dcab95dc3c23fe4b0c228248cbc9da49f357af7
039befb37011f760bb1c5b4ad544e5919a66a9744fc8e9f8feb67c80bf94128912
039e78a72b042513e12c10e32c03852ff8006300c8ef81055d7e26434c338eb08c
039f005f484a582a4253747f58a007ca552220e2ca50cceb22928c4a2c22198295
03a574689cce785c5dd5a857af9263bc9baa175517e8c5f1ada646fae4dfdd2efe
03a58f3c5e475c3b52dabee19d20af86b587ba29841017107d4a65f9b08a841401
03b21726b0adc536946a92db6c3a59b7646233b77ee357bf10872e9cefa439b858
03b5d27ddf82dbd09c4a826a2182ad3dd8706557688d35d59dcad83ec729c7b87e
03b72bb135769f53414d1a0f5c9af006f22202fb90b23f210641fe8a1fca28eabf
03ba83d3c04bc9f802c14f7197045a144ae2f8d57bfdd8e744ce623951c32b7ed3
03c3c088863b7ae8a1a6e430d6f115f74ae19ff3f7d35fbc681e3ec81cd93ac79d
03ca436b59be121baadb2e2ed5e6fb34fa4ddd6d8691c4bd1ced710f9b32519cdd
03cf049c5331a5609dff7dac0d906ca98b49d7ed4bb8a952a08cb96f2599cc8666
03d6f94316c5a4f55952d5ae44a9ad19007d55483281deb3affbb964088e9c291b
03d9189041a9979dd19f10ebae3b25c7cb62331113a49a5c3df0495127ea714a74
03dde9b2f6b8516281f422e9cc0838100fc451b87e7ddcb2f044fb4da667b1039e
03e76357147af5c87411f23c3bddd24879336ab629e172a41a168dceaff80909c5
03edf0a53f5c4ecba04af1fc03953212b359d7bf1b65a949716c606a15cfb5e608
03ef6d7370184e8345942f40809aa048d017114ea2a6531f3bbf80547ef13a574e
03f7e3082e9643c6de1736421e9e2d0afa216c617e39da6707f0eb8724746d4c42
03ffdda6d6d41b3b1d6dec55ab8977d2a0ffd5afe67306cb313d293474577fc650

By the way, I did not use your generation code. I see no reason why that would change the results. Here is the script I used to generate the private keys and derive the associated compressed public keys:

Code:
#!/usr/bin/env bash
for i in {1..300}; do
  priv_pem=$(openssl ecparam -genkey -name secp256k1)

  priv_hex=$(printf "%s\n" "$priv_pem" \
    | openssl ec -text -noout 2>/dev/null \
    | awk '/priv:/{f=1;next}/pub:/{f=0}f' \
    | tr -d ' :\n')

  pub_hex=$(printf "%s\n" "$priv_pem" \
    | openssl ec -pubout -conv_form compressed -outform DER 2>/dev/null \
    | tail -c 33 \
    | xxd -p -c 65)

  echo "$priv_hex $pub_hex"
done > keypairs.txt


I would like to clarify that I cannot solve the problem as it was originally presented.
In my program, the condition (pma) > (pmb) must hold true for the results to be valid.
Currently, I am working under the assumption that am = (10**37) == (pma - pmb), and this relationship must be satisfied for correct outcomes.

The reason I am posting this on the forum is not to boast about what I can do,
but rather to find a partner who can work with me on discovering a method to derive pmb from pma.