diff --git a/20230511/rsa-03.png b/20230511/rsa-03.png new file mode 100644 index 0000000000000000000000000000000000000000..8e57f33175351aea44b5da7bc50c1b6968308a7a Binary files /dev/null and b/20230511/rsa-03.png differ diff --git a/20230511/rsa-genkey-01.c b/20230511/rsa-genkey-01.c new file mode 100644 index 0000000000000000000000000000000000000000..c38de73f1425a816f1afa9f307972a713fa8d67e --- /dev/null +++ b/20230511/rsa-genkey-01.c @@ -0,0 +1,14 @@ +#include <stdio.h> + +int main (void) +{ + int p = 11117; + int q = 11171; + int n = (p - 1) * (q - 1); + int e = 137; + int d = 2; + while ((d * e) % n != 1) + d++; + printf ("d = %d\n", d); + return 0; +} diff --git a/20230511/rsa-genkey-02.c b/20230511/rsa-genkey-02.c new file mode 100644 index 0000000000000000000000000000000000000000..32da9f4f07208bc3c6b66b616c2ddedeb59ca397 --- /dev/null +++ b/20230511/rsa-genkey-02.c @@ -0,0 +1,42 @@ +#include <stdio.h> + +void ext_eucl (int a, int b, int *ss, int *tt, int *ggt) +{ + int r0 = a; + int r1 = b; + int s0 = 1; + int s1 = 0; + int t0 = 0; + int t1 = 1; + loop: ; + int q = r0 / r1; + int r2 = r0 % r1; + int s2 = s0 - q * s1; + int t2 = t0 - q * t1; + if (r2 == 0) + { + *ggt = r2; + *ss = s2; + *tt = t2; + return; + } + r0 = r1; + s0 = s1; + r1 = r2; + s1 = s2; + goto loop; +} + +int main (void) +{ + int p = 11117; + int q = 11171; + int n = (p - 1) * (q - 1); + int e = 137; + int d; + int t; + int ggt; + ext_eucl (e, n, &d, &t, &ggt); + printf ("d = %d\n", d); + return 0; +} diff --git a/20230511/rsa-genkey-03.c b/20230511/rsa-genkey-03.c new file mode 100644 index 0000000000000000000000000000000000000000..5286e8b913063dbc93c884b6412eaa00dd9312e0 --- /dev/null +++ b/20230511/rsa-genkey-03.c @@ -0,0 +1,44 @@ +#include <stdio.h> + +void ext_eucl (int a, int b, int *ss, int *tt, int *ggt) +{ + int r0 = a; + int r1 = b; + int s0 = 1; + int s1 = 0; + int t0 = 0; + int t1 = 1; + loop: ; + int q = r0 / r1; + int r2 = r0 % r1; + int s2 = s0 - q * s1; + int t2 = t0 - q * t1; + if (r2 == 0) + { + *ggt = r2; + *ss = s2; + *tt = t2; + return; + } + r0 = r1; + s0 = s1; + r1 = r2; + s1 = s2; + goto loop; +} + +int main (void) +{ + int p = 11117; + int q = 11171; + int n = (p - 1) * (q - 1); + int e = 137; + int d; + int t; + int ggt; + ext_eucl (e, n, &d, &t, &ggt); + while (d < 0) + d += n; + printf ("d = %d\n", d); + return 0; +} diff --git a/20230511/rsa-genkey-04.c b/20230511/rsa-genkey-04.c new file mode 100644 index 0000000000000000000000000000000000000000..149c293e95eeac117839144be26143df06676161 --- /dev/null +++ b/20230511/rsa-genkey-04.c @@ -0,0 +1,36 @@ +#include <stdio.h> + +void ext_eucl (int a, int b, int *ss, int *tt, int *ggt) +{ + int r0 = a; + int r1 = b; + int s0 = 1; + int s1 = 0; + int t0 = 0; + int t1 = 1; + loop: ; + int q = r0 / r1; + int r2 = r0 % r1; + int s2 = s0 - q * s1; + int t2 = t0 - q * t1; + if (r2 == 0) + { + *ggt = r1; + *ss = s1; + *tt = t1; + return; + } + r0 = r1; + s0 = s1; + r1 = r2; + s1 = s2; + goto loop; +} + +int main (void) +{ + int s, t, ggt; + ext_eucl (99, 78, &s, &t, &ggt); + printf ("s = %d, t = %d, ggT = %d\n", s, t, ggt); + return 0; +} diff --git a/20230511/rsa-genkey-05.c b/20230511/rsa-genkey-05.c new file mode 100644 index 0000000000000000000000000000000000000000..36d9850cb47d0488dafc632ee82b6739e258e1d4 --- /dev/null +++ b/20230511/rsa-genkey-05.c @@ -0,0 +1,38 @@ +#include <stdio.h> + +void ext_eucl (int a, int b, int *ss, int *tt, int *ggt) +{ + int r0 = a; + int r1 = b; + int s0 = 1; + int s1 = 0; + int t0 = 0; + int t1 = 1; + loop: ; + int q = r0 / r1; + int r2 = r0 % r1; + int s2 = s0 - q * s1; + int t2 = t0 - q * t1; + if (r2 == 0) + { + *ggt = r1; + *ss = s1; + *tt = t1; + return; + } + r0 = r1; + s0 = s1; + t0 = t1; + r1 = r2; + s1 = s2; + t1 = t2; + goto loop; +} + +int main (void) +{ + int s, t, ggt; + ext_eucl (99, 78, &s, &t, &ggt); + printf ("s = %d, t = %d, ggT = %d\n", s, t, ggt); + return 0; +} diff --git a/20230511/rsa-genkey-06.c b/20230511/rsa-genkey-06.c new file mode 100644 index 0000000000000000000000000000000000000000..652d45f34b8c7bdf3f6ea35ceefcaa1c2df0996f --- /dev/null +++ b/20230511/rsa-genkey-06.c @@ -0,0 +1,44 @@ +#include <stdio.h> + +void ext_eucl (int a, int b, int *ss, int *tt, int *ggt) +{ + int r0 = a; + int r1 = b; + int s0 = 1; + int s1 = 0; + int t0 = 0; + int t1 = 1; + loop: ; + int q = r0 / r1; + int r2 = r0 % r1; + int s2 = s0 - q * s1; + int t2 = t0 - q * t1; + if (r2 == 0) + { + *ggt = r1; + *ss = s1; + *tt = t1; + return; + } + r0 = r1; + s0 = s1; + t0 = t1; + r1 = r2; + s1 = s2; + t1 = t2; + goto loop; +} + +int main (void) +{ + int p = 11117; + int q = 11171; + int n = (p - 1) * (q - 1); + int e = 137; + int d; + int t; + int ggt; + ext_eucl (e, n, &d, &t, &ggt); + printf ("d = %d\n", d); + return 0; +} diff --git a/20230511/rsa-genkey-07.c b/20230511/rsa-genkey-07.c new file mode 100644 index 0000000000000000000000000000000000000000..740d45eb897b421314d74fed061bbc54561b8517 --- /dev/null +++ b/20230511/rsa-genkey-07.c @@ -0,0 +1,42 @@ +#include <stdio.h> + +void ext_eucl (int a, int b, int *ss, int *tt, int *ggt) +{ + int r0 = a; + int r1 = b; + int s0 = 1; + int s1 = 0; + int t0 = 0; + int t1 = 1; + int r2 = r0 % r1; + while (r2) + { + int q = r0 / r1; + int s2 = s0 - q * s1; + int t2 = t0 - q * t1; + r0 = r1; + s0 = s1; + t0 = t1; + r1 = r2; + s1 = s2; + t1 = t2; + r2 = r0 % r1; + } + *ggt = r1; + *ss = s1; + *tt = t1; +} + +int main (void) +{ + int p = 11117; + int q = 11171; + int n = (p - 1) * (q - 1); + int e = 137; + int d; + int t; + int ggt; + ext_eucl (e, n, &d, &t, &ggt); + printf ("d = %d\n", d); + return 0; +} diff --git a/20230511/rsa-genkey-08.c b/20230511/rsa-genkey-08.c new file mode 100644 index 0000000000000000000000000000000000000000..b8d0d63efe2649c02ca07399a83be728098d0aa8 --- /dev/null +++ b/20230511/rsa-genkey-08.c @@ -0,0 +1,45 @@ +#include <stdio.h> + +void ext_eucl (int a, int b, int *ss, int *tt, int *ggt) +{ + int r0 = a; + int r1 = b; + int s0 = 1; + int s1 = 0; + int t0 = 0; + int t1 = 1; + int r2 = r0 % r1; + while (r2) + { + int q = r0 / r1; + int s2 = s0 - q * s1; + int t2 = t0 - q * t1; + r0 = r1; + s0 = s1; + t0 = t1; + r1 = r2; + s1 = s2; + t1 = t2; + r2 = r0 % r1; + } + *ggt = r1; + *ss = s1; + *tt = t1; +} + +int main (void) +{ + int p = 11117; + int q = 11171; + int n = (p - 1) * (q - 1); + int d; + int t; + int ggt; + printf (" e d\n"); + for (int e = 137; e < 256; e++) + { + ext_eucl (e, n, &d, &t, &ggt); + printf ("%10d %10d\n", e, d); + } + return 0; +} diff --git a/20230511/rsa-genkey-09.c b/20230511/rsa-genkey-09.c new file mode 100644 index 0000000000000000000000000000000000000000..50e5a9ffa2edf51d2ee13f7a040a712f173e6596 --- /dev/null +++ b/20230511/rsa-genkey-09.c @@ -0,0 +1,48 @@ +#include <stdio.h> + +void ext_eucl (int a, int b, int *ss, int *tt, int *ggt) +{ + int r0 = a; + int r1 = b; + int s0 = 1; + int s1 = 0; + int t0 = 0; + int t1 = 1; + int r2 = r0 % r1; + while (r2) + { + int q = r0 / r1; + int s2 = s0 - q * s1; + int t2 = t0 - q * t1; + r0 = r1; + s0 = s1; + t0 = t1; + r1 = r2; + s1 = s2; + t1 = t2; + r2 = r0 % r1; + } + *ggt = r1; + *ss = s1; + *tt = t1; +} + +int main (void) +{ + int p = 11117; + int q = 11171; + int n = (p - 1) * (q - 1); + int d; + int t; + int ggt; + printf (" e d db\n"); + for (int e = 137; e < 256; e++) + { + int db = 2; + while (db < n && (e * db) % n != 1) + db++; + ext_eucl (e, n, &d, &t, &ggt); + printf ("%10d %10d %10d\n", e, d, db); + } + return 0; +} diff --git a/20230511/rsa-genkey-10.c b/20230511/rsa-genkey-10.c new file mode 100644 index 0000000000000000000000000000000000000000..55f7eee1133dd5b09aac63f478de46af02a6d299 --- /dev/null +++ b/20230511/rsa-genkey-10.c @@ -0,0 +1,50 @@ +#include <stdio.h> + +void ext_eucl (int a, int b, int *ss, int *tt, int *ggt) +{ + int r0 = a; + int r1 = b; + int s0 = 1; + int s1 = 0; + int t0 = 0; + int t1 = 1; + int r2 = r0 % r1; + while (r2) + { + int q = r0 / r1; + int s2 = s0 - q * s1; + int t2 = t0 - q * t1; + r0 = r1; + s0 = s1; + t0 = t1; + r1 = r2; + s1 = s2; + t1 = t2; + r2 = r0 % r1; + } + *ggt = r1; + *ss = s1; + *tt = t1; +} + +int main (void) +{ + int p = 11117; + int q = 11171; + int n = (p - 1) * (q - 1); + int d; + int t; + int ggt; + printf (" e d db\n"); + for (int e = 137; e < 256; e++) + { + int db = 2; + while (db < n && (e * db) % n != 1) + db++; + ext_eucl (e, n, &d, &t, &ggt); + while (d < 0) + d += n; + printf ("%10d %10d %10d\n", e, d, db); + } + return 0; +} diff --git a/20230511/rsa-genkey-11.c b/20230511/rsa-genkey-11.c new file mode 100644 index 0000000000000000000000000000000000000000..5c338148db70a1edb8ff9e62d3a159deeb5ea181 --- /dev/null +++ b/20230511/rsa-genkey-11.c @@ -0,0 +1,50 @@ +#include <stdio.h> + +void ext_eucl (int a, int b, int *ss, int *tt, int *ggt) +{ + int r0 = a; + int r1 = b; + int s0 = 1; + int s1 = 0; + int t0 = 0; + int t1 = 1; + int r2 = r0 % r1; + while (r2) + { + int q = r0 / r1; + int s2 = s0 - q * s1; + int t2 = t0 - q * t1; + r0 = r1; + s0 = s1; + t0 = t1; + r1 = r2; + s1 = s2; + t1 = t2; + r2 = r0 % r1; + } + *ggt = r1; + *ss = s1; + *tt = t1; +} + +int main (void) +{ + int p = 11117; + int q = 11171; + int n = (p - 1) * (q - 1); + int d; + int t; + int ggt; + printf (" e ggT d db\n"); + for (int e = 137; e < 256; e += 2) + { + int db = 2; + while (db < n && (e * db) % n != 1) + db++; + ext_eucl (e, n, &d, &t, &ggt); + while (d < 0) + d += n; + printf ("%10d %10d %10d %10d\n", e, ggt, d, db); + } + return 0; +} diff --git a/20230511/rsa.xcf.gz b/20230511/rsa.xcf.gz index 99c800d647e8970e3a2576fe290d777464913638..43b1808cba4258247e056c6f9f465e1b86d5926b 100644 Binary files a/20230511/rsa.xcf.gz and b/20230511/rsa.xcf.gz differ