Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Views: 521
Image: ubuntu2004

RSA CRYPTOSYSTEM

ASCIIPad Procedures

def ASCIIPad(Message): newList = [] messLen = len(Message) tempIter = messLen - 1 while tempIter >= 0: newList.append(Message[tempIter]) tempIter -= 1 x = [100+ord(newList[i]) for i in range(messLen)]; x = ZZ(x,1000); return(x); def ASCIIDepad(Number): n = Number.ndigits() % 3; if (n > 0): print("This is not a padded ASCII string\n"); else: L = [((Number - (Number % (1000^i)))/1000^i)%1000 - 100 for i in range(Number.ndigits()/3)]; N = ""; for i in range(Number.ndigits()/3): N = chr(L[i]) + N; return(N) def isASCIIPadded(Number): N = "" n = Number.ndigits() % 3; if (n > 0): return False; L = [((Number - (Number % (1000^i)))/1000^i)%1000 - 100 for i in range(Number.ndigits()/3)]; for i in range(Number.ndigits()/3): if L[i] < 0: return False if L[i] > 255: return False return True

RSA Encryption

def rsaencrypt(Message, encrexp, encrmod): A = ASCIIPad(Message); E = power_mod(A,encrexp,encrmod); return(E); ︠b7b84e69-a0c5-43a2-ab5e-f94a0452cc77i︠ %html <h2><center>RSA Decryption</center></h2>

RSA Decryption

def rsadecrypt(Ciphertext, decexp, decmod): P = power_mod(Ciphertext, decexp, decmod) unpaddedMess = ASCIIDepad(P) return(unpaddedMess)

Example. The following example illustrates step-by-step RSA encryption and decryption.

########################################## Choose two primes p and q ################################## p = next_prime(861786187687436287634876534289765348257634287956239487652349785634875634875) q = next_prime(7345678659826873465873492654392856349285734342875687689734569384275698374563847956349875) ########################################## Compute the product p*q and (p-1)*(q-1)###################### N = p*q phiN=(p-1)*(q-1) ########################################## Choose a random number e< N such that gcd(e, phiN)=1 ######## e = 101 ########################################## Compute the private key d ################################### d=1/e % phiN ############### The RSA private key is d and the RSA public key is N,e. ################################
######################################### Choose a plaintext ########################################### M="Crypto is used everywhere." ######################################### Convert the plaintext into a number ########################## m=ASCIIPad(M) ######################################### Encrypt the message ########################################## E = rsaencrypt(M,e,N) print(E)
979153975075107784281799842594898949688234055468244298885509654151181066422087535039031049660169647247652878439563659738124018482375543000035994478937003968901276
######################################### Decrypt the ciphertext E ##################################### rsadecrypt(E,d,N)
'Crypto is used everywhere.'