키 합의 (X25519)

X25519 : 𝔹³² × 𝔹³² → 𝔹³², (k, U) ↦ I2OSP_LE([clamp(k)]u) · 쓰이는 곳: TLS 1.3, TLS 1.2, SSH, WireGuard, Signal

1. 각자 공개 키 만들기

기준점 G (u = 9)32바이트
0900000000000000000000000000000000000000000000000000000000000000
앨리스 개인 키 a32바이트
77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a
X25519
공개 키 A = [a]G32바이트
8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a
기준점 G (u = 9)32바이트
0900000000000000000000000000000000000000000000000000000000000000
밥 개인 키 b32바이트
5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb
X25519
공개 키 B = [b]G32바이트
de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f

2. 공개 키만 주고받고, 내 개인 키와 상대 공개 키로 계산

앨리스
밥
= X25519(a, G)
공개 키 A
8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a
= X25519(b, G)
공개 키 B
de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f
공개 키 A
▶
공개 키 B
◀
= X25519(a, B)
공유 비밀값32바이트
4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742
✓ 공유 비밀값 같음
= X25519(b, A)
공유 비밀값32바이트
4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742

3. 엿들은 사람은 같은 값을 만들 수 없음

이브 개인 키 e32바이트
c0ffee00112233445566778899aabbccddeeff00112233445566778899aabbcc
엿들은 공개 키 A
8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a
X25519
이브가 계산한 값32바이트
aca07efc835da7c8d3db521559e91f09f1cd1d4aaae5028e49981267b59b7004

✗ 공유 비밀값과 다름 · A와 B로는 a나 b를 거꾸로 구할 수 없음

4. 공유 비밀값은 그대로 쓰지 않고 키로 바꿔서 씀

공유 비밀값 → HKDF-Extract · HKDF-Expand-Label → 키 → AES-256-GCM

X25519 안에서: 앨리스의 개인 키 a가 공개 키 A가 되기까지

  1. 1

    바이트열을 정수로 (작은 자리부터): 𝔹³² → ℤ

    개인 키 a32바이트
    77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a
    k = Σ bᵢ · 256ⁱ
    정수 k77자리
    19076158533740022697853188432810029468508100820210985396154491514718125885303
  2. 2

    클램핑: k′ = 2²⁵⁴ + 8 · ⌊(k mod 2²⁵⁴) / 8⌋

    정수 k↑ 1단계 결과
    19076158533740022697853188432810029468508100820210985396154491514718125885303
    ℤ → {2²⁵⁴ + 8m : 0 ≤ m < 2²⁵¹}
    스칼라 k′77자리 · 8의 배수 · 2²⁵⁴ ≤ k′ < 2²⁵⁵
    48024180843069071553745934684982006431825596986621126406018887516696408295280
  3. 3

    기준점 바이트를 u 좌표로: u = LE-OS2IP(U) mod 2²⁵⁵

    기준점 G 바이트32바이트
    0900000000000000000000000000000000000000000000000000000000000000
    𝔹³² → 𝔽ₚ
    u₁
    9
  4. 4

    몽고메리 래더: (x₂ : z₂) = [k′]u, 255단계

    스칼라 k′↑ 2단계 결과
    48024180843069071553745934684982006431825596986621126406018887516696408295280
    u₁↑ 3단계 결과
    9
    ℤ × 𝔽ₚ → 𝔽ₚ² (사영 좌표)
    (x₂ : z₂)
    559e436ff8a76fae783f6811a56e0289b51cd9b9c6359799c9344541a9fe2e45102fec2971a04eafa7ea7b1c1bd82d1f9da24b44dbe71c1b3a53537f12aca0fc
  5. 5

    사영 좌표 → u 좌표: u = x₂ · z₂^(p−2) mod p

    지수 p − 232바이트
    7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb
    (x₂ : z₂)↑ 4단계 결과
    559e436ff8a76fae783f6811a56e0289b51cd9b9c6359799c9344541a9fe2e45102fec2971a04eafa7ea7b1c1bd82d1f9da24b44dbe71c1b3a53537f12aca0fc
    𝔽ₚ² → 𝔽ₚ
    u = [k′]G의 u 좌표
    6a4e9baa8ea9a4ebf41a38260d3abf0d5af73eb4dc7d8b7454a7308909f02085
  6. 6

    정수를 바이트열로 (작은 자리부터): 𝔽ₚ → 𝔹³²

    u 좌표↑ 5단계 결과
    6a4e9baa8ea9a4ebf41a38260d3abf0d5af73eb4dc7d8b7454a7308909f02085
    bᵢ = ⌊u / 256ⁱ⌋ mod 256
    공개 키 A32바이트
    8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a

몽고메리 래더 255단계 전부: t = 254 … 0

접기 / 펼치기
tk′ₜ교환연산x₂z₂
2541↔xDBL + xADD00000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000009660720
2531xDBL + xADD0000000000000000000000000000000000001e7aa9269a4d9f6a96bd1e100000000000000000000000000000000000000000001a4a07d15624c8a84762000000
2520↔xDBL + xADD74207e833245d9b10ac9d85c7e4341c1a122f31571f80100005ae0f564803e724cc968d7ce34e80c549f7ea813969bcb0b13dcb5fbb53b20014ce79e0e8c20af
2511↔xDBL + xADD399d2b19200b70e865ceaca846bdd68fbbcef0612090f1240f4450c89c4c167970b1bf88cdb64be89781e6f862d3a3790672cbe04c7bf068f7370e22050b578c
2500↔xDBL + xADD63a6d3ff8937b9e99ccc57e99f87fcf2b59685e2b04aec3c8c0a215ece0eb3a75cf32904fe9e890119f442702ef38f07037892a347e9b0d8f9c410b2ae1c075e
2491↔xDBL + xADD3ca829c822936fbc8822d556eaa8c80830de7b704739f7b13690af25002ccde9052090f27d7214ca0aca004227f3476b53ffbd10f3e3c74f724a03a24f9629a9
2480↔xDBL + xADD27fad3531b7c22ed0ac6b317d549ae96d40b3e87b332f6f2fdcc0c7fd0b7cb240eeacd4c22476135fe39eb768e8abef9db68fadf621a522a75a759505a3aa903
2470xDBL + xADD21bfcd3ae2a92558e1b21179f8836857a49a2e3667134ab95ab8c9fd9150d72502fcbabf291b304329511a125b7c6eff70b76f5974ffd6460d40ce709704f125
2460xDBL + xADD2bf616c1b0a999a2979526dd207cc61fe84048d0161c13b426637c2e32465cfd30e3bab7dfb364327c3ed6aa6a7417c2f024ca12c666252cb9a84c7f8b9617a6
2451↔xDBL + xADD4343b9bb7e733596e2a8a18350562015e81e439bf07cd23b570f914ca9cdbd7d1cc07ed4314de3100acb2f1ddeb251cf9c9cdce798e8f2b21b7cbf161ccb74bd
2440↔xDBL + xADD526bb54fa6fba8df644f09d93d2cf337fcd933905ea0e9e9b233812524a21fa534228a6308c2b1f47909f5bbe166935e70f49aac981e6fa556a5fde3555d75b3
2431↔xDBL + xADD33f9313a1e8c4b2b59106e1839c73b109ebce59e6e72afae1a10a1b0d4fb19f95c90b2e4cf9b7b03ef9c9205b6fd9d820d8c9e3058767fde78e37356fd50efb4
2421xDBL + xADD11ed2e7229e44a75dd880b48a8b07df9d34067cb2ad2852339347c4e62e82eb46919838e58dd7e8bfbabf18d6870fc6be83c407717a36aba71992e1896777022
2410↔xDBL + xADD271041926bc818b4ab2739b434e6663f6a616f6a8afb7ee5eb9ff656f97490072bb48581b070374c07f59b123e29199c9b6d91973fe90fc8b2d6a68c36be95db
2400xDBL + xADD7ee8a5ffecf620a3f1a5527dd88dda1718c8d57cb67479a8e9a4f73f0a6cd5455a96c9ba727aa9ee6a9d7ece48638032bc11834c5558429876dcda78166ab087
2391↔xDBL + xADD3304e7aaa2b804b2a2b449d23f664b3b0fd1454a74417c5c174c0d05eb2361071736caddbbc8305072b755497fb04cd74bf94559841ef1b67fdc8d0f411b7903
2380↔xDBL + xADD536a53b4e704fa6bbc15e646e5d0dba10a3b79fd591dfd1fdee437003d99130a0fe34f315c90d91b183dccc176cad495a4225d5f2cc1f5b5c8c8cf9c890736af
2371↔xDBL + xADD4cea65c50497d0c0efcd684c047604511a79de62cdd974d95d0b68ac6b07bac46120f8ae00c1395b4f23322fe87afd30bb63eb2aa8a5920355d3fef6770d0f71
2361xDBL + xADD6128f2b81b9ec267a7fb8a9a177fedb342063a33ae15a3c4b4bc5fd1e42ea4c93ed7e388bc2b68be488049d1059c082708c18ebd88642ed9d29ca533f9ae7178
2351xDBL + xADD233222edad641a2b2f4c8df6dc386795166713203240371ff90a50b63fd9de1a2b2d9aa571eb0036ca56a681e522732679dd4e5b19b077ac7508c11856593b27
2340↔xDBL + xADD7e3215380abe18d0552444faf6561ced4f442fcfb8b876de2e9a97d92fd513e06283ec24f1a5dbe2cdf11299143ea38cb09a36cf708b67e98392be924484808b
2330xDBL + xADD5a8fae2c9daf96bcd73370ca42bc95e6887af8bc875b47a6dc18816f08d1d6d27da71a75c76cb5b6aeeba076acfa59cd5a54f34b961ecef3b9a45ecd1c8eb7f2
2321↔xDBL + xADD6ec19a9427b99322b1865ea45e605105c5417f868ce1437a681e95b95fe85e605f648214ab21f16890bbc7d314c76cf660a0e6f352135fb5ad815b21149e7aec
2310↔xDBL + xADD41681691a60d59a06685b6b4377231312009c6990ab85b2058c75e9240a499532d497f6c440810ced1b205bf631d3fb0e6ba88cc498f0ab7cd9b216f5f0864e5
2300xDBL + xADD4b820ed83e60714c31ac53240de8b4f95647aec94470e45f50e861083482a98b42f26804ccd3953eb1db8ed19dff9c54a90d391ea4fe77ddd2b79ac7ec37c9d6
2290xDBL + xADD06d188dd9cc0c329f8a9d54ea0e4a5be755834e925e26da293e52e4ce91f93b80b4d5e8db22120747e90f18e4e61b5c56bbf2348679515804b2461a016f19639
2281↔xDBL + xADD71284b7023ca3fefe691402cd3ac7dbeda50abce81175d60d9abce279b12650b71422590e3d3544b8fd13098f60d8a5f13cf633eb20e3ca8e70b958185d7b481
2271xDBL + xADD3d60ba54c16d1ff7188418c7569abca735b9bd6a56fc0f36162d68e094e3436727e1644ad37da76974ba2a2fb420e88b98affa89c790e9db536ab41cc19ec506
2261xDBL + xADD2bd44f6974033371bc881a2ef01132eeb744f451ef8ec37250d01265ad0f779861708465b8e26e1f055437f5ef72d3622679bf04ac05f1196aa830a30ac34064
2250↔xDBL + xADD1a1f99af3cf0213f892befb5d074b25b03c539ea0d60acd0b4d000f7590575dc2426383fe6eb7998aa175077df502d428b56fa6f8b0635c1daa78a0a3fb4cff8
2241↔xDBL + xADD7329f930b2e9c580576b05fde1494fac7678141faa3f7d6aeac0ba082c85ffc5590d28f6935d43816ab7cbb5253dc161240301aec50661dcc7d0440f443fa95d
2231xDBL + xADD2b93d255fd92c685cec2472876361d843cd04fff155ed4a3d18d192cec128040008852b783b69fb8fba533e5de40323bf465145af050aaab98ae1e53cd85729c
2220↔xDBL + xADD7ba9f28d56356ae3a24ca9e498bc4a5f9af5ee93bdb2b6b84fe3bf67ed66e98503bedf050ebc612d8ae0e6884895007165dff9006411b76c6834af001ce96fe9
2211↔xDBL + xADD14c464ad075f49f8c59ee4bb42e445330d5fb7a5ce0a845ac7e31617c6f654067d8c5000b9f5f331154bbcb88f8e3aec170200ba2379fa3de5fdad4de121cec4
2200↔xDBL + xADD5b9d1971844256e3b0e898be670d5f00994737e246128e3b3dfeef774e9b3e1b72d7fe1d49a0aeaff1e1083017d874d6809b553745728912c983ca5856a5e709
2190xDBL + xADD57b7814526ddb174ef44a389e679f7037f82a70c8fc106180c2526067a613cc20a0c9b3d719d4d51a45cd09809fef463a4af162aca0031ba7b7700729e2ed215
2181↔xDBL + xADD52800ce215c7f19a181bcc204d07688838135028b49ab7d6ed80103d9117afdc073a437f59e05a7eb73bb394f9cdc83f57393a11f0c120eb5209b41186b3a10b
2170↔xDBL + xADD718d5d00d7118bb8f0ef8eb7ba668b91f8235113dd9f07566a86571681ecd6434dd17fd674906757a9d196c3d83c6b92e308a9a07824bbf8adf23adae8125269
2161↔xDBL + xADD041d5be7e3537bacc035e3cbf6e6cbd666254fae8cf27ad818d3589929b2d2176cf22a5ce220c6d86a4cfcb03b650ede47473d0c6bdf430110c0db99cca54182
2151xDBL + xADD683a2058ec1c508cc00cb1deabb2e35ffd937aaf8eff5ec41422b8d55e3b2593235c0af076e6d51af3f01a118b08dab8dd63cd2a30b3159a7d10a4f693ece90b
2141xDBL + xADD4a78e3a7d8b8d2c51eb80cc75cd20a234c309d70d7717dca8ba1c0dc161ef1c0247b9b78481ae93d57ca906ccc288cc4e0855116aa24103e49c4dfdf38ed9723
2131xDBL + xADD07781bc121d284c71c48be9b271d3d7067a1791c0a4583782c68ecddd259a9ad4eeb0cf4237b9ccf27014facabd298e70d4f889f60c25047bcf4bca0d1c2fe7f
2121xDBL + xADD7a451c669c7f234c00bf09a6b026fb7807160406aac580c4321d5ac0dd15d4220b71e7cc288be68c004fe8b9508426a85460970a07ec07203089ff6d0c51bd94
2111xDBL + xADD437416cc62c4c78f54098b10350c749217c9b6aa371079ee0f3a26c6101cd41928f8e6432d399ffaff1a6da5662bcbaf087095a339429ae9058dc8fa9d14b44e
2100↔xDBL + xADD28b7e8532bbdfdd8a9e4b0186615859b18435f7740a6af88c3a1464f8314a36602b4abd63695058ab0e2f99449df764a001d00cbf365ae7ca0e5e861f5308683
2091↔xDBL + xADD268690a28c412175f6fbad0edc310c4b133de5967fd7e8482b07488b8ee347da5f4e00ff0c897387e2e9a03a22cef4a78c555c9491702093a0a766d6d3bc3c76
2081xDBL + xADD6c21d5b08752e02cca45fb001cf00ca189bb5c1d227e80d24328fbfacac03fc5197a9d67790eee395e0f66c44d39944044a620ca8006b3c3f1ce455a4002d8fe
2070↔xDBL + xADD4b879a3942db26d56d4b39b06b0acfccb19c09037505e68023af05ae44a1bb60604e1a5ab51772b2fe42c7a0dc8171248527729be3de2e62b2b9c3681c004b95
2061↔xDBL + xADD19ce54b62d8279b8068d2e9e58c0429d7b853eb117a4c2fe55578185ccb118175f22642a493e3a84fb9c9c64c7240dc8265283c6a9344e4c8048016665aa6498
2051xDBL + xADD00aec2ba6c15d039c17f340a8e6d218e4116bb33562f52c37fd397e49617165c6a8bf9064681417b51f0e1fc308006cb9fff0f8432f6195faba5f470bfc3212f
2041xDBL + xADD518e07b44821006276f1394069bb6bb3bd10c3098cfa4e71effecec85e2770033ff4b515893b465b35de802a043bb8d362b88a4781f38926b19a5a065cd6cd30
2030↔xDBL + xADD3ff3de819a6a34ba5195a86692328bffbf1c1c48fc2ecd8c959c661ead22f7096f935d6185b8fefb7817083aba44b90d6ad23fc0d2c869258481ead0bd0be55e
2021↔xDBL + xADD717f9d970984f461e394e7f3c1fff2f4e7f98e232b643fd6868e624bfa9923690c7ee06ef3c6f46cbc48f94a2f17dad02458741276ec5d0574c7d6db9d0fc3a7
2011xDBL + xADD609e66a0b5638ae36a9a7fa7aa171457c7e6b506f344c0569deac91b4991374b10025f3e24c7e9c8494ed1f10be4be1a8216ed3feaefcbdf1f448984b1ed85ba
2001xDBL + xADD71f3d9b3d7aa73cec5c6078e2ba2a5394b787395ab5f5a4308c3ea296d273e9b5c4f48161804581307ad846285778b526fdca285f789f63816f8c9866340e97c
1991xDBL + xADD158677a9baf386d6a6163b08e8430bf2ec8f9ae27d613ba6c975883ee6e6ab7c6f0926bd06d1445d137462ae7c31344d2eba806be8ae92e638ef74f3e50eb000
1980↔xDBL + xADD4ba7ffa7e4441b3dd5b7c83a424ffb5906ba03f8d95dd315cd0cf05be43283f0559321bbfe1bb7accfe04436aa78b7023e6cc40e83a28a474b3162aed3693f22
1971↔xDBL + xADD42246c547c64a1c86090737b4760a0b9c76ce5b7c6bc4ceff88e3aeae37b0081049b692270217a778a6cb3d9d42a4c608e0df387adfb5cd68f63efeff4fc870c
1961xDBL + xADD44618c4b4ef92c5accdc3bfa070ca0d15264221fce6413bb183fa47400d8415f3049b62403c7cac52a9c15cf23aa9854cf0a0b74a06987b567852eb99c4645b2
1950↔xDBL + xADD5dcfae60b433be911801b413737832af71b717dee27574c613806dc03ce3eb55584375b3520176085f92b7ba68a172ddcdc06658acd8d279daa15b0e84307d77
1940xDBL + xADD12fce4de6da27d8ba277bb4e4597d7d65ca2892ae8dabb8083028bcb649080e9348ae3d6b5505b634bef56d9ac9966ac0562897f345714feb828a2d16089e5f6
1930xDBL + xADD2415aa6908739d82237e1de97c89de624e7125cb2b817502646843ea9bb4340c2b0d6d34dbefac44c660f13a60110bd85507fcbe1bf351a00325ac386a7c1332
1921↔xDBL + xADD4af50ee0756684fb0eab56880e33a7beee7276e2f48d2eb3d3e36bf211544c241b2a19553d6ee4d8a62dd6eb1c7ef01656449b4efab6b8c27af17a0598c496a8
1910↔xDBL + xADD11918523b1bcbc770900be4858ccc22ccf5cefa4c962b97f50a903400c68ccfe0b6964a5daecb92fabc18f3782cbef49d2141fa643878030245b620bd95a467f
1900xDBL + xADD1e5886754d16857e2297275487c10add8852a35bab3ba8df39988f4e9e14723c4c06f7c2f380135f779e4c04a0792979a5156a9c0e4eb7065b4ebaf42efad57b
1891↔xDBL + xADD060e56e26c61ca0aa1325254b98a7c17395952fb6fe14332614d8be28a8700b5162894644eac766075b85ef435a25cb01915f13d39e2562443014c9ce138d8a8
1880↔xDBL + xADD42823917b38b2cca90c8732d3c4d5b756fd017edaeefc136a5e6dfd15f6d12db1b126b7cc3c85f667e48d63d58920e604f16b8c00e91995a64ba317e7fac3c89
1871↔xDBL + xADD691379d4e3221c0b7d5a74a6ac138b50e4d204560278d7421d7e2ec01134afbe58b5be13415d20a5d510226e07d98907cc64a9c31540240b3fc521697dbc655c
1860↔xDBL + xADD1781f72a120eb8210bee79196533dce19baed461fe00cf184891c3366abe5dbc0f00b555ed576057552f1b55ba6827b1d7ea5db484f69ba1f487936c8c3f79fd
1851↔xDBL + xADD4ea529439aed823786759011eb76048a3ae6276afd34a9b7fe501f96b266885449eb8ec7d7736014d4125180827d1b3974692308c49c5b948df10cb8d1a8aad6
1840↔xDBL + xADD73343ec4f45aec19f96128e513a7532b2cdc891920f37f13286e6c8040e3110b02ed70c20633efbacf2fb6a88c340f90a6b06b97fec3e1a7ecee53a11b19bb88
1831↔xDBL + xADD6b182c116be4f2aed7b5ba64cee6ff34b5865850a887029fd63743a49b8373dd61507275c142c11513afc2221e818a849868747c44fb51cf000848309e689e9d
1820↔xDBL + xADD37b53091a9d4ac31c0a3a05468333202d5284396578920f39c3797e9f8befbcf744b6ff235b2ab18b589c92a6ddd88f7f6c9dba04abb29e2d8f504d18f946af2
1810xDBL + xADD0e2290014ec0b27d77cd4e2677b580ccf7243b33c70f53baf22dc7c6822f35eb07354c00c31a955e1b631ad8922151d5b6518260419c9838960d23aa574d9d71
1801↔xDBL + xADD1f0be67662f0b3b88828ae3c8b08a474d20f30dd0161df49c9e5cf4b8a3108dd184e5b3eeb675346d115c14a1859d0a8f235f7cc2a4dc9e3a1450d15430612ce
1791xDBL + xADD6b758e0949e411629deefb24c2047a3c5931bbdd085612ed3256b2fc9202976222c1527990a23425220734c7a7b65261b5337e84172090850dc455abc415905f
1780↔xDBL + xADD67cb463925ab326cacd69d5541346322904ab88e601976b7c766af3642ea509b21cd52b110c33b10ecfd66fc8db5f7471bc0c01956a4826e64351d56e114dbb1
1770xDBL + xADD78673e8a274817c4454b0840dd6fb945d229ad92ca15e7cc485a5d7fa29b09255457c5942a8a4004c7e0713da22ad596876b0304bf2f197777bc5a9a6b66cb02
1761↔xDBL + xADD393dece01e124c210d3c9872327cc23f20464b1e97277596d8c91da52eaded5866d6dccdb35f556e8437d5dc7cb82887fd2712eb6d80e3d3447348398bc89257
1751xDBL + xADD056ced95f0f5a332ba11a5bb0030483d5fba441474f59adc6cd4d15b16fe65805f4b0be9cea0c388494548f6a54203822798b1480608a04bfa13a4d7df01d38e
1741xDBL + xADD20f22cba0d06666c7daa5083eec307c0cd8c73ea343a528f483f1d8ea150681202c50102c8746383a9f1a4bcdd246593a74bf7a662ca0f4367a2b23f5c829b2c
1730↔xDBL + xADD0fb9a955f36ee08658f1354188d6dbb2ca3482a57a04bb4269326acd7ddc6dd6482cc3eb33d0da583c92cf2bed0b8b472e9fc0d76d15a7d1c318817301ff6d04
1720xDBL + xADD0d7954df0930327c35c1f9f78d301e80df50cd92db6a26302238f2991b14a5044709fa6cf0127df04ea9d2f8160dbea854e67a0f5f4c8c5e48408ebad94eb66d
1710xDBL + xADD2dded9331dcbc4746c452ae1b55516755d1c9a3a217c5bba690ec8b5e8d09c55278684cc714927953ea244445dc0f2aa6df4a02a7ab083b018dce24454779196
1700xDBL + xADD11b8e2db72746b1440103605fbd27dcec57783387ad7462794897c0ccbf4c7886eb54bf45782b642f503f53703f3db6c1e7deaccd0a66df85f84a5ef623b4e11
1690xDBL + xADD1ff98f131b9ab192ca23a145e22a04197bf83056e60e73afb66192e1fc1b6f066dfb61802f415f36a82978e71b6537c925400549ce22164188dddd711bc62a1a
1680xDBL + xADD18181dd09585bddc246d88d8fc5bcc20117f9dfea46fa6718c707aeab8c5bcc55c39c36aad966ec5e92dfeeec08b3df2c696363309dad709c344ea9969535bb0
1671↔xDBL + xADD6caa86a2b4e4001bebecc92abdfdda651ac05c1872f2c731c6c789bb2285b5d930519e80be400d4b00c9f8fe58b448f19f4b0afc949ad1788eecb7ad4ac9ad23
1661xDBL + xADD08b941edde165ca70fd601cb03fc04ef4639f4c029ffd44fc624d854f38de4746213328064b58ac4e85816836bd09e49c96d79ce26608bc7f04d1132da6dd6bb
1651xDBL + xADD20c1c8b602729ca6eef6dde5efef4b9b8725575b8419bfc0d9ddaa9cfbe51dd67761444a2bb589324e057d4fcfc932491b090925969831ca752b2915d5c21412
1640↔xDBL + xADD62f15cac0a2f15cbdb02a5b1022c33bf63c1b65d069327bb6aae503115872d155f444d937f0ef5b681dca4ccc086fcf576549dc9a84c9914f2ee2f8cc527f473
1631↔xDBL + xADD05cd152470da98b6461f403c446cc85280ec2fae9241a43b2e04a5fde68f9aec3cfaca6b179cb3278a84bcc7c6438c5abd7e18d0c5a768bcb56f43e11eba6c01
1620↔xDBL + xADD7b69c8d6e208e808c309cb980c37793be994ab61ca939863dba81938c0436da87c2f17ff0fb57c87b557a008267fc45a15992e4913a3da90e6c7f1e764f49173
1611↔xDBL + xADD5dca1509b1fcaaffb49b5811951ad1d3a32f8204d8ade15d3cd99b5e9015e4ee10d3c01232197b2d3c9af96587e3fb220e2559980e386e0e6d92cc43b9cce1d1
1601xDBL + xADD69ee84966dd31f1b2e50474005d1c51145005bbcfe844aed1c3a9abd1e0f4d3b4129bf429d57c8b9bf2bd57bb3c01c6ff32fe53460cc6137d5f311fd01e68714
1591xDBL + xADD1bf0d13567ab1effc582b6b655ed753c5bbf0c101a411c565a5dad9882b233b5697ee5329127ff16bc72da8d9ca1d51286192ba87cda33eefd6ab195c6a3b404
1580↔xDBL + xADD156322a1d99955d68ea728df00ed7191bb57f032b9487f1dabfe7b2c1e5926cf757c0261e33ec403c177bc5140268038eaeb0a07c37548dc83bc4fa66c5a6feb
1570xDBL + xADD374cc65dca1f592eedc835cc4e83d4b960070df1fb8cd8d74515338535dbd97d374fc6a67899bf8a2ff87aa9ed0f7fae98554dbdb7fd4ec59acadf122195a84e
1560xDBL + xADD2d76c41445f20dddba7ac1f1d4181c00dd48838f9bc1b5d3f97e4a2be32a897236013f965832a68eaecaa02b418ae18af578c687846694076d68e45d9777a76e
1550xDBL + xADD6bba98ba0ff9caf41c6f13c576223743d3b07558ddf04ef808bea4df31f9d5fa4dfa32d2ba8500cb1d1e7c64f26ac0e42a4688a2b222e287c99f256bd85ae1c1
1541↔xDBL + xADD1173df0c539da2530e914ffbce24c55914dad882a9263b43795e8491ffa23db249a338cf477a18af5f5681dd933c02fa718a99eefc141cef326d8f5425d31207
1531xDBL + xADD1a24876f27c9716d3dffb6e33f20f79667be7cc5eed58a2f352d1982e267d69a42d915b5f8ffe35dfa5730ca9e941931a160ba31cf66a154b8058a371d7589e3
1521xDBL + xADD0f3814b747fd45e518ef67e8b7b32ab398e2418568315a2f575028688ca7d9ec74490e781adab7379f748257f049a89c8b8c2926e454fa14ebff6224e3163647
1510↔xDBL + xADD16deab08123b66732a5c825566e06564b72b081423e3b93f0e645aa4c4234e85086600601ca30c6dc66acadc37aa0c0fc9a7698b5174eb23c17b2aeb9900763a
1500xDBL + xADD64beac6456aa62ae5d4ecb71ce70628bfa9ab4bf0509132ea5634604fe0d444b61c08743304b58d2ab19a08979ee4dc718fd5109d73f2d971a55539638ff5fe5
1491↔xDBL + xADD5264b0ffd250a7b1f6bbd73c6c25ca1cd54d6d938e5f5a5af2983cb3fd9f66df2b3f2f34e5e26e30d72e87a6b0107ecd1aba5931503f3c430b886314d576b6f3
1480↔xDBL + xADD3d566390da70ff50982c9e82c31ae52c0fa79f56c8858e06f34ee062f02185ab30a6e474681535eed56fcc185f776131d98508f6a104a24f376c87a5f38eae65
1471↔xDBL + xADD3d0543baec54e1a1d947d2b7b8d25aef1a201ac02238e4c8de593b8e7f15eb29358a37a0a136b7cf4cda4cd8a6dd8d0a4092b911ab663898e3f20b3e2edf14d2
1461xDBL + xADD6501cae2be9ae94d57efe1ba52d2f136db1fa58e808b8e74bb4f60c52b73e13d47fda453df21b234f1c61acf36191a2e70208b0c28a0ceb2d7b5f125594ccebd
1451xDBL + xADD2709395f31418a9b23486269de93d153440517b64238e3c57fb272001879ce1d50ec237c797c32bc5348b169a9cef629c8ed3505c0c1a3d0358f04884df9c1f0
1441xDBL + xADD1c259c85025110a1550a5aeb13f36f734208324a667fb02f75e86dfecb85dc1c18d205f4c34a735859b139da8b802b7c0b4b6c9a40a044b74eeb645b15b752f3
1430↔xDBL + xADD00f416c924dee3c051c39739a60f42b6786a139abeb7d2a5cbd16b291491629431bf6381584181269fe96ea9956836d60f247b2ae59e1d7ca0bada95dd582aed
1421↔xDBL + xADD52f1e39122963baff683d6ca4378d268375891bce40410d5976de18e6f2227a12365103a477c2f07f54a96a914fad464d4858bfc8447ec321b89662c6fb4f65f
1410↔xDBL + xADD134f81f0029c7a782b77245086b2b34fe2caa0a23f275ad3029cdbe20f8ba58321fe24b16262db1d604c5cb707960af363c7ad58262d0e33ba0e5559321bd8cd
1400xDBL + xADD0e79b7a3e2b0f12837adce7d8aeca4355c6d48b097e6b1786bb1c3e78f6152f55bc2b36bb1abcb08018c910316af185df5b3bbe0dac3b6b28eb775a5de398925
1391↔xDBL + xADD7480164996fe6f4a3e6811fbc0e4141ebe6052546a476d719381ae42abb6808549cc952ada88946e72695ccdc503f8e3a9ebb1620a425fd2107acb3641cd6cab
1381xDBL + xADD0a5eaa856e6f35d4476f89d38473b63517edb28a06eae3dbb26c8220cebe9a0a2aadc4f4f85223824534ed62d2a27e948dea03c83bfefae1da3cff53335c46f0
1370↔xDBL + xADD5d9b4226e62243e9abff0b5a0e743ca7371bb28099043a3893a2e09f26499e755a1778dfb118822b875163ab9ef31c402bc42c55a141b22d9b9f8260df81ec70
1360xDBL + xADD4cb172f4b8f96d1b0ae5ab2869c198a6e2462e7b921d477ddf94c4ca29e8932a15c3cb00d10f5cc19e2725c17bd568c17d5ccd4b032cfe5c77efea8d29cde93e
1351↔xDBL + xADD711cc8ac6a9a118b2f057875c339c3cbc43c808ab58230925706ede77fd1b7cb4cdbc276a6cdc9882492b881334beb1dbeec55c11bcb51faf1eac29f1aeb9cf1
1341xDBL + xADD3f0e126bd1dca708013874645939ae004d66cca4080307b34bee3bf7b971ce426aae26115bcd5aa5bb3b2ad480859e6b06012aa63634191cddb5804a5d0e52c5
1330↔xDBL + xADD0857a5c9e346ecafc8600931b33fa41cee25f450eab3002c02cb9c69855b9c68774a27c0df32e3df12eda48e862c7c0bfd984c52419f306b8c0db4bed927142e
1321↔xDBL + xADD2d054dfc2242261fd7d795a18948c9b03b6637ab7c47490e0e3d6e57dfab43842af17a748ef23b5ba5e44c1102cb6ab6f56ce1586939ee13882942b52cbdafd7
1311xDBL + xADD769195a5241098bd1686772ddbcf6949841f593809d8f6cc36c2647c76c83f434f70f10279805c7e0c4eb15730049c787449a727504eaea4a92741ba4f706b06
1301xDBL + xADD48354e5e6f1b03259e8ba5dc36af4f1b2e599445c04fd21bff3dfc4136ae0fd31b900822c0d9c17d6e31b1df538e5cc164613f149175a6e7ee3d186adbcc3468
1291xDBL + xADD7d842b4294b7862aa81dadf14983ed24e8824f845aed9415dd2913a22d2d36cf04f3d056b009f56bbc7ed51ca7015dbacd0dbf7dcacab12b9f5e7e9f3a6f75de
1281xDBL + xADD77c6b2d71a5e284f26e722c9831a9e547f2e6866afb87a3f49172a0a62937b736214c0ff5bea09fa3faf521297873ddc3fb1385f257fc4099a1f3cf66ea45fc1
1270↔xDBL + xADD3c0a2d08e769cc53e063821f640b54b21c34f5ecb89f09c8a68adb4dacff25716ec714788fbfb2e6d8fb06c380e3befb89def616febcb46864ab7e7dab25fac1
1261↔xDBL + xADD5e40db2cb651dee18017db73c4770ba8b343bfab6007f19a333186e6ee49d88f12522ba8902da7a11b840ce42354c7be054eae07302b85086ddf0bc3b5cfa4bb
1250↔xDBL + xADD7dc58349937825e0451038ec832ffc748bd4f46c93e4dd62cae15b2de533d3012babd0726e68a813e59e1cb47a07bffd98f9a91753d8fc28892b32c8cfb757ab
1240xDBL + xADD64f84429b5054f67f0bb96a2b78a7f7964ef7f85b0ef163600319ad7e54fe11633f0e80bd284fee75680840bc9fafa918518733143b8a30429ea9876b1161453
1230xDBL + xADD10f5c7a558976dc85bf7ce7aa5616303cec1a6a5da8f4f1ca9e4844e226eec38772e8d02a4c87b354cd0f27a5d33b56b354048e5473f2a152a8aea88cf5fcba5
1221↔xDBL + xADD7adcbc817d9b2f7867301d5358505170cc27870f0510e7ff02c19fbf04e5ce7e29aea1523be4ba570ba2cfea755b716804e66a1d16bd6b732b64bd6cc5225849
1210↔xDBL + xADD226883ea1852fb5778a878698d72d45c0c33038d56540f820f071b7ae87648f8750aa83edba77be6bb44f95027278c6c4cba85857314eb2ab4bf97a0911d0fe9
1201↔xDBL + xADD3082cd6cecc3a25e319ec9f84b41589aff81ba074017523a084f0620b7e978b65532df79ab4b3470f710fc99a68e947cee8a23f0384600cfee95e86d027b2451
1190↔xDBL + xADD6dc6009129f04e0522dc3a015196fe6f1dc60d8550e3eef01f6bd2339416602e0d7ca9943294fbeeebc0299b9c20f3ac75c5664d5c05bebd7e9154b99d9bc355
1181↔xDBL + xADD62938b9bb89411a6eb4f85b5cbeb3a6fdf40c6d36ce9c44adcd674bd4118de3b357b5f66ea1c9deb781a31e4603c78029b7b75be3ec1c02b8adb2f9dffdfeb04
1171xDBL + xADD14eb52c1a20875ebd90eff5dd85075a0ed56121047923884b1db022b0df44b332c1303e9bcdc9c0bd0c11b2903a1c983bfffa36720d7e70971677aa666f0b19b
1160↔xDBL + xADD03b6e1a294e9b59fb3005d75166c92884dc9c6d920f99f8378399512df6e3aba41479b9e5d6d96dab2b574eea3a82feb317e39afdc9aabcb333fd0148c07a3e2
1150xDBL + xADD7b9f4c53ee2ef637c94a8ccdb150d12b2162f6280fa92cb099fc7afc33d4184728eefc8a7fbb6e9f52df4669e77f9787301a14c5ee6f59467bc73985499aa5b4
1141↔xDBL + xADD6036317c62b1ef6bdbeef496fe01844c06db0b3e48401bd21f6208d631710f896327d42b2768b41b004f3d5d1583f57ea3f71a641f00c3467cd59fb537112b0c
1131xDBL + xADD265b4515abf379225eb6b3e7587ce1cddbea610d176fdc28e9eff71768bb36d1386c7c7a92a8d54109f652de3d308dc1cb46ccd85ea2bfbdbfa09cab1cce0142
1120↔xDBL + xADD3923252fa0eb0295ce78420495ba1bbf19d426cabf3988262da589b12ad0660777de0b07486bc59b331c149fafde8b012f3f81392fe6b1a2637eec8083586a4f
1111↔xDBL + xADD3e12ab526bec452ea11c47e1c946f8ec5e47c5f444ef6a4c4c906de5fb8c63a91a03550741272bcc960c754bf5045db06688a4849fa2741af66a940f60185439
1100↔xDBL + xADD7a828e4ddcd8463bff6e651eba3544bbc41a34701a8b50387ea4d78ca017630208c24662dba16c3df4182f181c200c049be279acc37587fbbb45fc9dcad2236f
1091↔xDBL + xADD34343d80c8008bfa570284adaecca0ff227440d6cd51b9bfca57b78bfc4839176ea2bbf8ce9f1e723d7ae620aa181f945248206bb07d87bb5e2e496b65660568
1081xDBL + xADD31a6c04e3c7f201bdf742bf9bd4adc4f4f5a44e58fcbc2ceaa361de4d4e3a02507a7d7f214aad49908a534eeeacd33025517805debc2121b69ea1d1cc970e9c1
1070↔xDBL + xADD3ce0b7710495794aeb74f95b70ee26611be628eba1c270a4e8530202df10199c64936902a13d6700c27e4ca330690ccf8c7b620d7a52e5c9696a9c829fab650c
1060xDBL + xADD5ffc13c6c43cf09239d4d731e46843348a338b818a5d394861a359bd221862b826b13d010fe80e971c8c76af199674bebad6450ffb77c333547e0cea267f7087
1051↔xDBL + xADD7df1037425d39bc6d0086973f7a082bfbd734c8759b82868e359a7d4468226845d801a5f7589dcdc4dc0c38831b19d51f755ee11198f84e6ee494d2a21134981
1040↔xDBL + xADD4886e8ba5b98d038c964ab419b07cfabfea61d4a3ecceca4809c059258342f9116c69790e303a183550e043c40d71aeb8ac430ce207ad6bed5be8229e4c2bd8e
1030xDBL + xADD47d04cf69a4e118e37afba61e0421e149e24a93b01c28c7d955da182a20de1493d0b20ce32f2df00edbe63b4d2ca581ccb0772b1f53c325eb94ffda6656f153c
1021↔xDBL + xADD3643a56b3b464253d2993f2c546c44721656173cf7f6af77c484a54a8ada6f2d454f71d90eb4fcb84a0e9046a1e7928f13e1dcd8951ab197afb66efc67717e99
1010↔xDBL + xADD106a631130cf28c4ea8f8ebc8639552f28e73867cbd2de8fd2c0452f918c6b8b77e92dff8aaafe5123e4d38045479ef7fcf451928e114915c59e8e434336950e
1001↔xDBL + xADD63fc233253c97c99bb92d1870f867ce0a87fb8ffa166b82148d54cf18658f1a53b635caf48d2dab61fbe0ff919c6d3bac98c80852139878ba8b76a877244bce3
990↔xDBL + xADD13797761518686d7b05920d9baab273f0c9689584972289be0caa4322455eafa35cacd2f73750192727706e7028acf17a0369de371066e54edf78e34c33ae99a
980xDBL + xADD604325aeb1ebe653ea91d797f9366ba5b28fd0d100f3dc723eddaec2b85ee9f071dfaef767a22b9c616d529f816f7f636990af1d3802464fdb63f5ed8b3079fb
970xDBL + xADD0d45e130a0ad937b55704f7983541e74617a0d7f2940edcb2726221d397c1c890b7aeac07524ab4ec96125f0911e2289508ca9818c625184f2a6e0ffadbd2a0c
961↔xDBL + xADD16ec9baedc1eeee75d5434df3a790fbce855b39907d2e24cdfb81a76ab53f0eb1aab054e5339369fb719e1bdb0ff10e33947224a53090e96913a7bfea6bb73b0
950↔xDBL + xADD622bca578f359165500d20b4af11c1f1d955fdfd18619c7226c6dfe659684bac143d6222136c94d4718c1f5682b79d50f701e3f50a8cf9ede9edc496826f7241
941↔xDBL + xADD430d19868775bb97ded395416167165039f8fcfe263e1b13fbb4892a25f9c73945d67f52a8dcc5c3bcccd8b88452921b689e570d61f7e23edacae6361b7d98f8
931xDBL + xADD5799bae5bcbaeee05f162bb077e74ef96173a233407039401dab2031726f83fc6a660c086c4ff1ff21540410b235c887f18ecdcac66cbbe2fa61d1bdc4098b3f
921xDBL + xADD52af09c2b92567a7eb40d22f9ea92e6bea00ee2927b1b835963ad3fd627275d61bf311ee2e77357481bd24c7d8da45f112555c39bed5c5d77a41c0791d044110
910↔xDBL + xADD14166081f543e1c833868693511c449ea414601c0938f8ae09749e150d772b332dd00f849440483ff8b77481e7b5caff80766ed60d610e1174a578e063608ed0
900xDBL + xADD4084a76091eed6290c2cd19ccf2a05475171560b05d03e6b5b966353aa537d575dc386e3a0d568f6b2b316bd98758554ff8963ca8b5136444de94681dfbe1f60
891↔xDBL + xADD2e0e1ac94b5143532634b8fea071cc3c79cf04d73c9dae6855213a61394351e466ab4415ecdf2cc3a0124106ed24be3d08599735753228ee9c37e1811b56266d
880↔xDBL + xADD5a4c7fcba882703711f8a855963c86e1b105016c1e02016299d0ce541f9bd1200102a9b267236e57edfceab91bfec5e16ad578fa98d3b68a4270c950d46db158
871↔xDBL + xADD1dc97f79a4990ea419c0bc461426b5efded7433f1113103a6bf57c2af7dbf8110291ae56faca43fb4f842b4f7f01a36862832595dae7973d106bcf7f4f040384
861xDBL + xADD6eb92a0a4284d651b0726ebd7e7924ae56dd8a0ca5f0a20ed2efc92151b2ea8b2c965565c755187e1c634255651e4fb460230265436f7e67e5dc0bc3902d326a
850↔xDBL + xADD090efcbd83425f530d37096ded41da16a343fbd1d35b4028460c461d2b16f0ba7990174a180d0d1121ebbb99a7765c503f8d25482751bea7727617a9cc32105b
840xDBL + xADD793c62e81afb97e91c98f67215b36213d5daffcdbf1416e2bcff399dbd029d805739fe86a1f453d93ba448fe311a71e24156f67e65fa2a955c799c1bcc3e7649
830xDBL + xADD6675c03f11b543c575bda249ff46c18f4ef297c216a4e94e59c0dc2ba4d6f9330de24a9d2df71ddc6eecfca6579619a609016d061eb3de6cb576f4d3b21ea20b
820xDBL + xADD092c87d29fed51c93c3c83101bee4a25de06e8c5ab249f2e9cc0b34d91b113544cacaf000ee5788cff960a9bc586cbdf14d0741a8605975115b81f22372f0efa
810xDBL + xADD6676866f049300df891161100afe6a4f6b4d5b33f7294203cc53a571deaa3a633439da1d0105888447b0092c2c1dde9ba51cc33ff8ed866faf1b88bb4233bb48
801↔xDBL + xADD102a37eed9a5e3539701257c37b8320fd16d542a481412acae088d22bb54287a6cef90e437172c099f250971e5069b566e5a2bed390078ae29a9d2835e1660cd
790↔xDBL + xADD357af6314d4b500c1325688a28a180a0f8bbdc0154002f2d74635de02c7adb6901b0d9ea4ac1d296213556a71437606996b6e0fdd2366bb57fd657311894db18
780xDBL + xADD320beffbc245526b3a1288fd4a0007ebbdd7bb2e2365b320d0cd51b4c4f5ec4629ab35ea2753fbc49ad4084e05164f3496c365545b87b8fe6f073d26ee85a418
770xDBL + xADD75d6e9176c3c95b4eab36a18fab88b3512ebfea91d6ec6cb05144cf36f50770e1cc767e432d0ac4ac9f2d294111123acbbe8338d3f188cfffc85696b5efbc8cd
761↔xDBL + xADD75cf64843c876111ec12f5ea458cfe7f2437124d69fd7ae711349ee123a4811d3ff010d46b3ab33b0cec207eb035849345c547080e45f64f82e605f53b7d1c6a
750↔xDBL + xADD324a10a8498d75bf3363054d523bac6c28b031f25ac18cd88b0c5c3255ce14e04397eadced37d6c5dceca6d022fc3bfc4fafc4a601026bfc4f5a634e19db3362
741↔xDBL + xADD643a730fb671c4785fcfd249b8758d810c8cdd8b7b8ad908fd3943d15211a0954edf80a4a06827ddea7093a0e2c0152434ab92bfbf023d03a40bdd046a22bb0c
731xDBL + xADD2356bc7f7e35751fb50b057055e1d604f22e580874d3dd638d624d7e927a9d4303e867901bbc709f90b98b0a974fb7ab536af4b9ac7d69874edd8ec873d59bf5
720↔xDBL + xADD3ac00144de7c1cf6a9536bd51a989d0357e2c41e7c9e4d37a79ff3f196111c4718d736ba69fbe9d5d36fb81ec2227624d8badf9549b21a0ec1603303a09ab7b2
710xDBL + xADD23d0eae0f0ceaf733fef2a2cb2d953a66fb54142d47102a2201cf4e6d491dbe24d0e3fe69fa05a50a21f6df7f02c51a532027ea8004596126fe12eb4f9c5e838
700xDBL + xADD34af08758a0d0807c5677a089a7006420a38a9772352cba3fc74f8580f57451d115ee834742b0072bcb420666ee715818a5528083bea01e420f79f3bd37a2bc6
691↔xDBL + xADD0e49ed92d5a096c275ca16cc72d4a20c93e4b915ece057abedca41343efd021506fdb81c4a1bc36b212ef686e63990d5bfd71bcb3708af3499c5e252eb9dfa72
681xDBL + xADD1348dc4fbf075e639a1920833afc02f62c2909a6c5b7e14a829c9e3badb8a22a194db5c65ca351a383726e12a2bbab376dd0a90a1870c9674dd4403958b7ace2
671xDBL + xADD4a874a6827615f156c3cd62e79a1961710231d1deaf672842f997a7956aee70942b7c12d649ca1bc50adb3119a88a9cbe7cda9c9c03daece23632ee1a0c63d72
661xDBL + xADD2e6319d1b781a5ca2cd1ccd1c77811bbab801a8bb912775788889353e060838d6cc595438d786957dd954626ab1529b1010cb61e2560150e560c24d5dd2f96c9
650↔xDBL + xADD07dc796d48a6feb40327bc9517d4b191aa800e48db6d7d00c39e9bb18dd3310c066972c26a274d862e2a70d8d10324127a617f35f23818e0fe13770e980d7f90
640xDBL + xADD08171d13707c1c3bc9b4a10ef54597a1e88f11641e738a72b331c24eb561e7140a608a2c4df9f9e37be0c1ebb7a07d9b46d4c89b7d81f7dcfa186fbfbc84de89
630xDBL + xADD3b08d2f8e6559232c0303ea89794673388d6134fa5b2f29d3c97db7b6520b946202700ea55fb191ab16c5ed54f99411747bec841d96f72d64e901056d9f5e0b6
621↔xDBL + xADD46a29ab854d019db2154cd3c7ae20b3d6ee5432cc094414e1992b1cd8bee6ed7192ddb73df1d769f5dcd4062d8d36402485c100adcf7bdfc5405cb7f818a14de
611xDBL + xADD0ff5f33f58e3a3e30065777be535581cc7b00f003f9ae67d199f4df4dadc4f4b129d43d72cf98d4e95d5907ec9fc1f7a7e3686172e572ce6c64b2b08683932c4
601xDBL + xADD0fa7f239ca63e28e960d40c1752cdaeb7019eff16e878d90d6e058db0d23c7be66d0cd983e916b7add6dc5a1a135c9aed0683b4935ea7e53b0283cd08f72941d
591xDBL + xADD1c113b9a5573a83005602e5d229b5bb85cc64637a8a141486c0f4eaa855da25b2c4fe2c6b6bc6ef57e3bd5f7805f866450c957dbcbc71305293f0f7cd9dcb3e1
581xDBL + xADD130e0c47167d653d6c46995f701e2645000215f5c8228dbfbe2316bb323875a93285a5484d48c050626e024a424dc79969730e2236ee2d8b8e13c1e43e1991aa
570↔xDBL + xADD58bbd004b1965f89f59cfcd1353dfdbfba47a2ac691066ca06683dbb326aae657bc104b6a7b27146dfad0404a7fc8784f84fc9633bec50df13951b15fb2f8f68
561↔xDBL + xADD3dac65429bf1d11bb25c62fe37cda47eaf10698a76ff683672afbff15fd55c325584af82c60c5d0334eeeb425121943732cfed6da655a0a67c8f22d694fd995a
551xDBL + xADD719fae5e5bd9746c487e9681664ad99af288d97811fb69963e565a0c501188b706a9be2ba676b4865f88d85ba5caa1eab97ebe5b96c68c92df10e99646f4ca92
540↔xDBL + xADD4d7d1b5fb398ea4e9b2a1bdeb3bb37258848ab137e314d98c742ad665a7cfbb128f1b65d1f54416f446d8d72568ada83da19941539d46e2c4e80700361f5c804
531↔xDBL + xADD03881b956a46c4929167346f41e952e59e36c872d7b768034065538ae13dc79f192993a4f02ad9c38d29e265c9c4787242af0ab59f98916b324102498e2eb9e6
520↔xDBL + xADD225b7f9c8ce14415b6ec5774e97ad75e33c9600605c40d91d06d61afc45047d65dcdc8045e16932430afc651dd4962e56e2f6a8472200cc7023e727531a26f51
510xDBL + xADD23247573e936c4302c81584a5e546b4a4d82aeb1f5038f3674012a0efb783cfb4d2e04881cb14fd1df989668fc7ec68c3b1d6e338390fa2be1b2624cbfb6dc7a
501↔xDBL + xADD0dc9bfe111c726e22c992b032e3ca9c230db56317d6d6f9c750f1b38b16d81a63b6223e8dbe8d2099cbee5a5067764d92346c0cf4fac056a89c55444387b47b6
490↔xDBL + xADD6f18eb0d7a8fedc985ed3f7a8b32d047b48b60b49a18444af2b74a51ebecd66d3154871743ea6aaa324bd76ddf130885d8f07d7406a80e8b9557ce9f278b561f
481↔xDBL + xADD5c1f914bf3e74928e3e7286af6763ada10c480f3138259a10fc831658feed36c65e5898e29967522abcb852a24f68fac2d5556053bb11dcc7ea20fde09d82aea
470↔xDBL + xADD53ab3c7139de8b85a5d258145ad5635608c169245edda334cdb14cd2cd0d3d9a5c812304ecfad2c7da63165080c90b7fa357fa67ead58d730471a25df084686e
460xDBL + xADD30a037aaba25099b6e78f2d1cfee1256bb36434163ea27aa072c74805d56f325329ce46ed16cfda630e64230e508934d98e3ae8b64f74c96bcee1384ae959d75
450xDBL + xADD4b18095548b087153ae955a155bfbefed46a7fb5c30f1de19747c40a30dc2cc079fb9f0ff755484e0eecdaae8ccb2b364e98f3386d5158f0f21a95a0254b6304
441↔xDBL + xADD69296e274a18fa44769dc54934787fb5b515da99d5d01c0baf5a871b4b29b76c7605910d15dd06e17e128dddb57f12d08534f5b0796f20699ffeb180b68f7fa1
431xDBL + xADD447f68bc752f6ea16f0d4f5350835c9ea1f718313b6ed28e02ba36f9575f9cce64fa15fbfe1635132a339f52c5e0be6784ed19f6b377492ccbf71756f0063a96
420↔xDBL + xADD44111afbe0a571a972001ba93d325744af9610d94def27bc01eb45ac166e94cc71b853f66b784c147a4f20206678e28fdccc11e6e8ce233cb8f309177ed66af7
410xDBL + xADD75c6c5e7ea77e4b03a748e29be9170417d9de18d4c9a9cfdf9a9b3fca734fbf40c3e22f0efdb2508619bc15e08e7f45cdc0d83d9fa0ef380173133ceb8f3ee23
400xDBL + xADD7f7aeac8f872c6097b258c0e3418ecad2d28386bcc4602943ff3b0675a5274ff145d86e2e8cc703b9fab466e0df1bbd28a92d5a13c52218fcd3d3774284c4854
390xDBL + xADD486c686e1c5d092ee1698e59055e9e6b42d1d05817f31962b69a6131932473f374313e5cc92dd0b6957405e7dfcb459bd7b478f89932010887e901e5d45d987c
381↔xDBL + xADD1233a900333ddc4247c7fe25512d2b9bbceeb8d2f4cf7e3ceb2cdfa84596c77d112f92052266d533049ba297bf4e4875c16f3043389821c0fb929460a5652fae
371xDBL + xADD402ba6612679494427bacee29053383258d5d34d9bc3e32f8fefa438f1b5a42e7c5581c89faa70a6c5bfd422a8f5e97f70f298722efcad8dd977838ec66f0b6e
361xDBL + xADD749d98a040efedc7334e2ccb347ad2d0b224e8e75330351706038b17e49639ad297000b04a7c224ef660998c6ec588ba7d5e233298c756efef4fb33520a0342d
350↔xDBL + xADD6b20a819af221d8bb880d3d5ee2c5607e2c657616c030ea7bd68e54ff4af5fb50a1259d31737c0b592fd23a1880a9d5b50ff07a5a84c5dd58c953fbecb6db01e
340xDBL + xADD612a501f00e6c2c45adbad0b6350496af0135372f79bda4df1a20996bfcfa9fe464c527c410b0515bdca6db65c9d3e9f3108e44eeed9dc98a617da447834f5b4
331↔xDBL + xADD0709d4ba587ab62a0885478cb5cea17f09aec8e89468b6f8144303042ffb8be06f2c8d41ac35f2d5abb1f7ba817e0c6854e61d9e6f7e59391f9171740203dbc2
321xDBL + xADD1d5abedb6f238817c4f299856dacc3f9acc03c91da7b8019ffa4c4e553dbbf55231e5f1ab0ed589cc08ff895b2b2b2904a622a1edd22694625702e1cdd1b239d
310↔xDBL + xADD218bdee5312a3f84cc0ca791c7b38f42094ceea087e3f55bb95f2036aae36e2109230931ad6a6a3e7aaa7bcd298c3a70d37d6fae0c0b7b40a910ea0a270e7e3f
300xDBL + xADD1bdaaa79ef63a7021d1b5bc5a4609e7671794510f7821722ffd6d405b546ef1e34532c077fe2cf729b3fbbd1a9d5bce3f3aa20247d381f655651a755ffa1e194
290xDBL + xADD27c7e2db530c1ca05241e41270f1481245af0c8691e76fdee51524a4da6921215e44bfa457bcf1d621d547c2a033bfee30363ef82df3ad91ff1d3360c54281b3
280xDBL + xADD7ff7a85501aee56919383a882f3badddb5f0841158636a65180fa3882a7ed4f270db015e4de5d0aeedcdb3aad7febe02c074dd3b55631c455ff5d9df16765d45
271↔xDBL + xADD5114f19586813a0d9c5d6db34dec3cfc68c5c56e791a56e1ff24978eccf52def6a21b7fa4be4ed8f031809656047dfa658a3765810de912ccf64f17921f42889
260↔xDBL + xADD75451fe19722d94253c5898ca53a5225e5500eeb71a2e02764d5482e5f263abb43683911bccb20b3c2ea7de56f2ea2b2596ab437ffe5da79a05dc33a9d4e5f44
251↔xDBL + xADD240b0a0b0c5db785e170fd48e283a372e630c22d730c9eccedeec6bf86b0646d2bdf311c12020c8a3a5e00a0475e27c4b3dfa550bab419365c61ba266d4fcd88
240↔xDBL + xADD5c72e17ebb79932fd717a6528f066ae04ff8c5538c63aa00c7bb7798af9535b35d85ad052da2b4eee8609f9f6a93618de035a028cd2a72186592453a855598e0
230xDBL + xADD381f2e53842ed21ffeefab723f30ddada50aff825b0a377eb7bf554f07f41f975ca49d822be0107ca513e4b7b42000fed415fd492ba7c771143bcbd95135c433
221↔xDBL + xADD7da434bb97f630ffc98f32ad7a7369fe10ba9d4cb227f2fdac6c1898e691e51073b98dcd39666dcee99c6e9e30833eeac48fbdf881e2444e3547a5be0f610388
211xDBL + xADD66d94f71b9cf94edfee880d89e4a9cb816c315230ea7a9903de4e5026aa7061a690603c5689d8f7db1f5eb12d4fe9150f883981074ca153d58ee91474394334c
200↔xDBL + xADD1cf108bcf6d465c7b6013f5aeeb085462666964fd6a08dc51beee26d9671d484791e80f910e947c03c0c9f039c4b4056dbba8c7a387197f854e0ca6034a805f3
191↔xDBL + xADD38216cfe8dfd2e973c80498c885f24193e08bec97195b58bb7f856c82c06621e5fff40cef5beea467abfdbfaa892485c69b1bbd2f8858c7d6cee1440637c117d
181xDBL + xADD5b3491de9c8d7de5f4f725be219b8672872422a85a9fdd29f0277a22294683ac75c5b7cdd3eafe701e25eeda51d75780ad78a7f67d6bc81e04aeca447dfd6c53
170↔xDBL + xADD2f530b9cf8e96bd700670f93a367dde3bcaa554a125fe05d216557db27b95adc3d3e24de595a4b4ac19c01ff219cd595d4112f1da9a3739a4a6512fe6f54a43b
161↔xDBL + xADD3e1be45a595f0a7504d5bc1a5f3c4a3817a1e0a6fd5c86e0d427fc53e03dd35a4e3cf039f928d857048cf18096ef1161a01e898aec580d7819fa3fa2c8869fa4
150↔xDBL + xADD161efa5fb6bfa306efb649ca81a0d4674ce6b4d0ca3c187a71855de635661947064a10c8107d37359e73aa79d7b1a71ea16af2496b5b19f65dfd4b6a50b65c06
140xDBL + xADD145e96b55ab464e73509d750d03dc6e22409d0bc8c7660074d1d0f092e39411a1f793b3277042d1d018b628a1217baab2b85f5e23af351874837969f374e97e8
130xDBL + xADD45b0ec52bdfae7734b8ceb0dcb8739a7dd83d1fd147ab02ef8c44f1536314e25782bb176799bd0ae7eb24b3855b7fcae63bed83a976da208849846219f1e04c1
120xDBL + xADD36c1b08a40c9c008aac19de21593d8e98bf129a22931f8b574df114cf52d64df0f690791f182e366e7e2ed07c0453e35f24c943c8aaa1ff9d115671155bb8e14
110xDBL + xADD7fcdfef33c56abe67c0e700ea67d289349f31b8fd957779f31fd2f2f74efcc9135809f1b14586f36da6d708e11f406ab41eaddbb860d0be19914d7379fe1ac33
101↔xDBL + xADD7a44ae01184ce1a796c4a5eb105de2dc6d21a3254a34b09f4d256fcd8380ff8376e7c3ab7d0321ff38501cb44e3c16c1f07dfcf605bda5ab49a084bfdfcfb0d0
91xDBL + xADD50ce39f073f16e830accc26767a7dd33cdc78c004342550ba5c153e9c25f7ba03e3c6b6cda5f863fd1692f74d76ae5d8907325d221cdc606500b8609ff54cd1e
81xDBL + xADD65f0c63748215bc645a9dc05bdff778feeb6b95e588e190c1a417593945d5aea10a4d51ada8918b90f7bfee3d49231f8346fe1e79191be92881281da8a6e5513
70↔xDBL + xADD5e6325f37b932fc427082f52bef9d1ef7b1da920788274f22aff65a3e0edebb57f5b5916f27c2d5f673e272c81133f23c9b6691b13811060e8d9851725237f42
61↔xDBL + xADD2850b7d1b05328efee3d0e3fc2dbdd82f01ced68436749576fccf7f30c928ce4798e73e1319ed2d9c37c05b109afcc5ba7e7f515f63b1d3e26a2a9a898c18184
51xDBL + xADD73642308b789799ff9ae5f0798509785f47ed898346e8ec5e2612ae6208f87a46887540fcb1fe8c41b5494b80d08f48eb98830b9a4ef1b7b8946633e1a8abee6
41xDBL + xADD483f08fcfaaa4115c2ad6195d83479563dbf547f03661cbae91b3a895911f6647039351fe21a489d7916560e7bf192ab364c7ac6b2ad638ee9060c2a1a2c029c
30↔xDBL + xADD0551178c95645bd32206e80395b4663fce91c6125ae8a12b3c67232697e640290eacd20eb4bac8a1b2edb0f03a6b3fffca4007c222690836d5876cec0983ad40
20xDBL + xADD224894360b97e5a103683c0d08e3ac9d54da11fcb3dd495e873df72a4174ce4f698fdcc59008ff82c2726e66ff276feb2c302b821a537ccaae4a4fb90e497945
10xDBL + xADD131ad408585442327045a6966013c0cd6a3ac54c5abae3d7af4a5faa6656bee949cd8999e07c2e89a4ac125d3ae0aac0906f773461cfbda98a36dd57d2b889e7
00xDBL + xADD559e436ff8a76fae783f6811a56e0289b51cd9b9c6359799c9344541a9fe2e45102fec2971a04eafa7ea7b1c1bd82d1f9da24b44dbe71c1b3a53537f12aca0fc

교환(↔)은 비트에 따라 두 점의 자리를 바꾸는 것이에요. 비트와 상관없이 매 단계 같은 계산을 해서, 걸린 시간으로 개인 키가 드러나지 않아요.

단위 연산: 래더 한 단계 · 첫 단계 t = 254 (교환 후 (x₂ : z₂) = (u₁ : 1), (x₃ : z₃) = (1 : 0))

A= x₂ + z₂000000000000000000000000000000000000000000000000000000000000000a
AA= A²0000000000000000000000000000000000000000000000000000000000000064
B= x₂ − z₂0000000000000000000000000000000000000000000000000000000000000008
BB= B²0000000000000000000000000000000000000000000000000000000000000040
E= AA − BB0000000000000000000000000000000000000000000000000000000000000024
C= x₃ + z₃0000000000000000000000000000000000000000000000000000000000000001
D= x₃ − z₃0000000000000000000000000000000000000000000000000000000000000001
DA= D · A000000000000000000000000000000000000000000000000000000000000000a
CB= C · B0000000000000000000000000000000000000000000000000000000000000008
새 x₃= (DA + CB)² ← xADD0000000000000000000000000000000000000000000000000000000000000144
새 z₃= u₁ · (DA − CB)²0000000000000000000000000000000000000000000000000000000000000024
새 x₂= AA · BB ← xDBL0000000000000000000000000000000000000000000000000000000000001900
새 z₂= E · (AA + a24 · E)0000000000000000000000000000000000000000000000000000000009660720

모든 덧셈, 뺄셈, 곱셈은 mod p예요. 역원(나눗셈)은 마지막에 한 번만 해요.

상수 · 표준이 정해 두어 누구나 같은 값

Curve25519RFC 7748

기호이름정의 · 출처값
p소수 p (체의 크기)2²⁵⁵ − 197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed
A곡선 계수 Av² = u³ + Au² + u486662
a24래더 상수 a24(A − 2) / 4121665
u(G)기준점 G의 u 좌표가장 작은 적합한 u9
ℓ위수 ℓ (부분군)2²⁵² + 277423177773723535358519377908836484931000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed
h보조인자 h (cofactor)곡선 위 점의 개수 = 8ℓ8