Featured image of post Báo cáo thí nghiệm nguyên lý bảo mật mạng 2 – Thực hiện và kiểm tra thuật toán RSA - j88 online

Báo cáo thí nghiệm nguyên lý bảo mật mạng 2 – Thực hiện và kiểm tra thuật toán RSA - j88 online

Trải nghiệm cá cược trực tuyến tuyệt vời với J88 Online Mô tả: Khám phá thế giới cá cược trực tuyến tuyệt vời với J88 Online - nơi bạn có thể tham gia các trò chơi phong phú và hấp dẫn online.

Thí nghiệm này nhằm giúp người học nắm vững cách:

  • Thực thi thuật toán mã hóa RSA.

Môi trường làm việc

Máy chủ: Ubuntu 18.04

Công cụ sử dụng

  • Phần mềm soạn thảo: gedit - Phiên bản 3.36.2
  • Biên dịch viên: gcc (Ubuntu 9.3.0-17ubuntu1~18.04) 9.3.0

Tôi đã viết bằng Python vì việc khởi động máy ảo và môi trường C quá chậm.

Mã nguồn

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
def f(r, x, n):  
    """ 
    Tính lũy thừa r của x theo mô đun n 
    """  
    a = x  
    b = r  
    c = 1  
    while b != 0:  
        while [j8bet com](/hy/6cb5ad08.html)  b % 2 == 0:  
            b = b // 2  
            a = (a * a) % n  
        if b % 2 != 0:  
            b = b - 1  
            c = (c * a) % n  
    return c  

def Enclid(n, d):  
    """ 
    Tính toán nghịch đảo mô đun 
    """  
    a = n  
    b = d  
    t = 0  
    v = 1  
    w = 0  
    while True:  
        r = a % b  
        if r != 0:  
            q = (a - r) // b  
            a = b  
            b = r  
            w = v  
            v = t - q * v  
            t = w  
        else:  
            break  
    if [iwin68.club phiên bản mới](/hy/e7a38f19.html)  b == 1:  
        if v >= 0:  
            return v  
        else:  
            return n + v  
    else:  
        return 0  

def gcd(a, b):  
    """ 
    Tính ước số chung lớn nhất 
    """  
    r = a % b  
    while True:  
        r = a % b  
        if r != 0:  
            a = b  
            b = r  
        else:  
            break  
    if b == 1:  
        return 1  
    else:  
        return b  

def rsa():  
    """ 
    Thuật toán mã hóa RSA 
    """  
    # Nhập hai số nguyên tố p, q  
    p = int(input("Nhập hai số nguyên tố:(p, q)\n"))  
    q = int(input())  
    n = p * q  # Tính n  
    fn = (p - 1) * (q - 1)  # Tính φ(n)  
    # Nhập e và đảm bảo gcd(fn, e) = 1  
    e = int(input("Nhập e:\n"))  
    while True:  
        if gcd(fn, e) == 1:  
            break  
        else:  
            e = int(input("Phải thỏa mãn gcd(fn,e)=1\n"))  
    # Tính d  
    d = Enclid(fn, e)  
    # Xuất khóa công khai và khóa riêng tư  
    if d == 0:  
        print("Có lỗi xảy ra!\n")  
    else:  
        print("Khóa công khai(%d,%d)\n" % (e, fn))  
        print("Khóa riêng tư:(%d,%d)\n" % (d, fn))  
        # Nhập bản rõ m và đảm bảo m < p * q  
        m = int(input("Enc: Nhập bản rõ:\n"))  
        while m >= p * q:  
            print("Lỗi! Bản rõ cần nhỏ hơn p*q=%d!\n" % (p * q))  
            m = int(input())  
        # Mã hóa và xuất bản mã  
        print("Bản mã:%d\n" % f(e, m, n))  
        # Giải mã và xuất bản rõ  
        print("Giải mã:m=%d\n" % f(d, f(e, m, n), n))  

print("Thuật toán mã hóa RSA\n")  
print("Họ [j88vip0](/hy/bd3810d9.html)  tên: W1ndys\n")  
print("Mã sinh viên: 10000001\n")  
rsa()  
input("Nhấn Ctrl+C để thoát")
Built with Hugo
Theme Stack thiết kế bởi Jimmy