0% found this document useful (0 votes)
41 views6 pages

123program Shanks

The document discusses implementing Shanks algorithm to compute discrete logarithms. It provides code to calculate powers modulo a number. It shows the steps and lists taken to solve a problem using Shanks algorithm. The results of manual calculations match those of the programmed algorithm, confirming the correct solution.

Uploaded by

Sergiu Oglinda
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views6 pages

123program Shanks

The document discusses implementing Shanks algorithm to compute discrete logarithms. It provides code to calculate powers modulo a number. It shows the steps and lists taken to solve a problem using Shanks algorithm. The results of manual calculations match those of the programmed algorithm, confirming the correct solution.

Uploaded by

Sergiu Oglinda
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 6

Exercise #7

on course “Cryptography …..”


topic: Shanks

[Prelegerea 12 ElGamal]

Task
[Prelegere 12 El Gamal]
Realize Shanks algorithm.

Let p = 193 and let’s determine log575 mod193 =14*6+2 mod(p-1)=


Hence:
1
α = 5 (PrimitiveRoot[193]),
β = 75 ( < 193, and > 0),
m = ┌ (192)^1/2 ┐= 14 (ceil(sqrt(192)),
αm mod p = 514 mod 193 = 56.

List L1 of pairs (j, 56 j (mod 193)), 0 <= j <= 13:

(0, 1) (1, 56) (2, 48) (3, 179) (4, 181) (5, 100) (6, 3)
(7, 168) (8, 144) (9, 151) (10, 157) (11, 107) (12, 9) (13, 118)

List L2 of pairs (i, 75 * (5i)-1(mod 193), 0 <= i <= 13:

(0, 75) (1, 15) (2,3) (3, 155) (4, 31) (5, 122) (6, 63)
(7, 167) (8, 72) (9, 53) (10, 165) (11, 33) (12, 161) (13, 148)

(13, 118) belongs to L1, (10, 118) belongs to L2


Hence
log571 = 14 * 6 + 2mod192 = 84 + 2 = 86
Testing
586 mod193 = 75mod193 = 75

2
Code listing:
import java.util.Scanner;

public class Shanks {

private static final int LIMIT = 32000;

public static void main(String[] args) {

int a=0;
int b=0;
int p=0;
try {
System.out.println("Logarifmul discret");
System.out.println(" a ^ x === b (mod p)");
System.out.println("Exemplu: 31 ^ 5 === 3 (mod 29)");
System.out.println("Introduce a : ");
a = (new Scanner(System.in).nextInt());
System.out.println("Introduce b : ");
b = (new Scanner(System.in).nextInt());
System.out.println("Introduce p : ");
p = (new Scanner(System.in).nextInt());
} catch (Exception e) {
System.out.println("Introduse datele incorecte. Numai cifrele pot fi
introduse.");
System.exit(1);
}

if (a < 1 || b < 1 || p < 1) {


System.out.println("Datele introduce sunt incorecte. Numai cifrele positive
pot fi introduse.");
System.exit(1);
}

int raspuns = aInXModPEqB(a, p, b, LIMIT);


if (raspuns >= 0) {
System.out.println("Raspuns : " + raspuns + "\r\n");
System.out.println(" " + a + " ^ " + raspuns + " === " + b
+ " (mod " + p + ")");
} else {
System.out.println("Raspuns nu a fost gasit.");
}
}

/** a ^ x === b (mod p) */


public static int aInXModPEqB(int a, int p, int b, int limit) {
for (int i = 1; i < limit; i++) {
if (pow_mod(a, i, p) == b)
return i;
}
return -1;
}

/** a ^ k mod n */
public static long pow_mod(long a, long k, long n) {
long b = 1;
while (k > 0) {
if (k % 2 == 0) {
k /= 2;
a = (a * a) % n;
} else {
k--;
b = (b * a) % n;
}
}
return b;
}}

3
Results:

4
Conclusion:

Применив асимметричный алгоритм шифрования Shank, мне удалось


вычислить дискретный логарифм. Результат ручного подсчета совпал с
правильным ответом в ходе проверки решения. Результаты ручного
вычисления совпали с результатами запрограммированного алгоритма, что
подтверждает правильность ответа.

5
Bibliography:

Code: The Hidden Language of Computer Hardware and Software, Book by Charlez Petzold,
Microsoft Press, October 23, 1999

Serious Cryptography: A Practical Introduction to Modern Encryption, Book by Jean-Philippe


Aumasson, 2017

Cryptography, Book by Rubinstein-Salzedo Simon, 2018

Information Security, 2Ed: Principles And Practices, book by Mark Stamp, 2018

Introduction to Cryptography, Book by Sahadeo Padhye, Rajeev A.Sahu, Vishal Saraswat, 2018

You might also like