Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Ашық кілтті шифрлау

Автор:   •  Июнь 5, 2024  •  Лабораторная работа  •  1,500 Слов (6 Страниц)  •  40 Просмотры

Страница 1 из 6

[pic 1] 

«Цифралық технологиялар мектебі»

 

 

 

 

6-зертханалық жұмыс

Ашық кілтті шифрлау

Дисциплина: “Криптографияға кіріспе

 

 

           Орындаған:Тлеукеш Альхам

2-ші курс студенті

Мамандық:  Digital Engineering 

Тексерген: Байдулла Аяулым Мейірханқызыай

 

Алматы 

2024 

CODE:JAVA

import java.util.Scanner;

import java.math.BigInteger;

public class RSA {

    // Санның қарапайым екенін тексеруге арналған Функция

    public static boolean isPrime(BigInteger n) {

        if (n.compareTo(BigInteger.ONE) <= 0) {

            return false;

        }

        if (n.compareTo(new BigInteger("2")) == 0) {

            return true;

        }

        if (n.mod(new BigInteger("2")).equals(BigInteger.ZERO)) {

            return false;

        }

        BigInteger sqrt = n.sqrt().add(BigInteger.ONE);

        for (BigInteger i = new BigInteger("3"); i.compareTo(sqrt) < 0; i = i.add(new BigInteger("2"))) {

            if (n.mod(i).equals(BigInteger.ZERO)) {

                return false;

            }

        }

        return true;

    }

   // Екі санның ең үлкен ортақ бөлгішін табу функциясы

    public static BigInteger gcd(BigInteger a, BigInteger b) {

        return b.equals(BigInteger.ZERO) ? a : gcd(b, a.mod(b));

    }

   // E ашық кілтін құру функциясы

    public static BigInteger findE(BigInteger phi) {

        BigInteger e = new BigInteger("2");

        while (e.compareTo(phi) < 0 && !gcd(e, phi).equals(BigInteger.ONE)) {

            e = e.add(BigInteger.ONE);

        }

        return e;

    }

// Модуль бойынша мультипликативті кері санды табу функциясы

    public static BigInteger modInverse(BigInteger a, BigInteger m) {

        BigInteger m0 = m;

        BigInteger y = new BigInteger("0");

        BigInteger x = new BigInteger("1");

        if (m.equals(BigInteger.ONE)) {

            return BigInteger.ZERO;

        }

        while (a.compareTo(BigInteger.ONE) > 0) {

            BigInteger q = a.divide(m);

            BigInteger t = m;

            m = a.mod(m);

            a = t;

            t = y;

            y = x.subtract(q.multiply(y));

            x = t;

        }

        if (x.compareTo(BigInteger.ZERO) < 0) {

            x = x.add(m0);

        }

        return x;

    }

// Хабарламаны шифрлау функциясы

    public static BigInteger encrypt(BigInteger message, BigInteger e, BigInteger n) {

        return message.modPow(e, n);

    }

// Хабарламаның шифрын ашуға арналған Функция

    public static BigInteger decrypt(BigInteger encryptedMessage, BigInteger d, BigInteger n) {

        return encryptedMessage.modPow(d, n);

    }

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

// P және q жай сандарын енгізу және тексеру

        System.out.print("Введите простое число p: ");

        BigInteger p = scanner.nextBigInteger();

        while (!isPrime(p)) {

            System.out.print("Число p не является простым. Пожалуйста, введите простое число: ");

            p = scanner.nextBigInteger();

        }

        System.out.print("Введите простое число q: ");

        BigInteger q = scanner.nextBigInteger();

        while (!isPrime(q)) {

            System.out.print("Число q не является простым. Пожалуйста, введите простое число: ");

            q = scanner.nextBigInteger();

        }

// N  есептеу

        BigInteger n = p.multiply(q);

        BigInteger phi = p.subtract(BigInteger.ONE).multiply(q.subtract(BigInteger.ONE));

// Ашық кілтті енгізу және тексеру e

        BigInteger e;

        do {

            System.out.print("Введите значение e: ");

            e = scanner.nextBigInteger();

        } while (!gcd(e, phi).equals(BigInteger.ONE));

...

Скачать:   txt (9.3 Kb)   pdf (713.9 Kb)   docx (621 Kb)  
Продолжить читать еще 5 страниц(ы) »
Доступно только на Essays.club