Batuhan Sönmez Ответов: 2

Как преобразовать этот код из Python в C++ или C# ? (оба языка в порядке для меня)


import timeit

try:
   input = raw_input
except NameError:
   pass
try:
   chr = unichr
except NameError:
   pass
p=int(input('Enter prime p: '))
q=int(input('Enter prime q: '))
print("Choosen primes:\np=" + str(p) + ", q=" + str(q) + "\n")
n=p*q
print("n = p * q = " + str(n) + "\n")
phi=(p-1)*(q-1)
print("Euler's function (totient) [phi(n)]: " + str(phi) + "\n")
def gcd(a, b):
    while b != 0:
        c = a % b
        a = b
        b = c
    return a
def modinv(a, m):
    for x in range(1, m):
        if (a * x) % m == 1:
            return x
    return None
def coprimes(a):
    l = []
    for x in range(2, a):
        if gcd(a, x) == 1 and modinv(x,phi) != None:
            l.append(x)
    for x in l:
        if x == modinv(x,phi):
            l.remove(x)
    return l
print("Choose an e from a below coprimes array:\n")
print(str(coprimes(phi)) + "\n")
e=int(input())

start = timeit.timeit()

d=modinv(e,phi)

print("\nYour public key is a pair of numbers (e=" + str(e) + ", n=" + str(n) + ").\n")
print("Your private key is a pair of numbers (d=" + str(d) + ", n=" + str(n) + ").\n")
def encrypt_block(m):
    c = modinv(m**e, n)
    if c == None: print('No modular multiplicative inverse for block ' + str(m) + '.')
    return c
def decrypt_block(c):
    m = modinv(c**d, n)
    if m == None: print('No modular multiplicative inverse for block ' + str(c) + '.')
    return m
def encrypt_string(s):
    return ''.join([chr(encrypt_block(ord(x))) for x in list(s)])
def decrypt_string(s):
    return ''.join([chr(decrypt_block(ord(x))) for x in list(s)])
s = input("Enter a message to encrypt: ")
print("\nPlain message: " + s + "\n")
enc = encrypt_string(s)
print("Encrypted message: " + enc + "\n")
dec = decrypt_string(enc)
print("Decrypted message: " + dec + "\n")

end = timeit.timeit()

print(end -- start)


Что я уже пробовал:

Я попытался зашифровать и расшифровать некоторые коды с помощью системы шифрования RSA. Я также поставил некоторые коды для расчета времени, которое прошло во время этого процесса. Однако я не смог найти способ преобразовать этот код из Python в C++ или C#. Не могли бы вы помочь мне преобразовать эти коды в C++ или C# ? Заранее спасибо.

F-ES Sitecore

Это не сайт для преобразования кода, но глядя на код, это не сложно, если вы понимаете c++ и c#, я не знаю, почему вы не можете преобразовать его самостоятельно. Если есть какой-то синтаксис\функции, которые вы не понимаете, просто google, что они делают, и используйте альтернативу c\c#.

2 Ответов

Рейтинг:
2

Richard MacCutchan

Легко, вы переписываете его на C++ или C#, в зависимости от того, что вы предпочитаете.


Рейтинг:
0

Dave Kreskowiak

Вы должны полностью понять, что делает код Python и почему. Затем вы должны написать эквивалентный код либо на C, либо на C#.

НЕ ПЫТАЙТЕСЬ ВЫПОЛНИТЬ ПОСТРОЧНОЕ ПРЕОБРАЗОВАНИЕ. Обычно все идет не очень хорошо.