def generate(KeySize): print("Generating prime p...") p = rabinMiller.genrateLargePrime(keySize) e_1 = primitiveRoot(p) d = random.randrange(3, g) e_2 = cryptoMath.findModInverse(pow(e_1, d, p), p) publicKey = (KeySize, e_1, e_2, p) privateKey = (KeySize, d) return publicKey, privateKey
def generateKey(keySize): print('Generating prime p...') p = rabinMiller.generateLargePrime(keySize) # select large prime number. e_1 = primitiveRoot(p) # one primitive root on modulo p. d = random.randrange(3, p) # private_key -> have to be greater than 2 for safety. e_2 = cryptoMath.findModInverse(pow(e_1, d, p), p) publicKey = (keySize, e_1, e_2, p) privateKey = (keySize, d) return publicKey, privateKey
def generateKey(keySize): print('Generating prime p...') p = rabinMiller.generateLargePrime(keySize) # select large prime number. e_1 = primitiveRoot(p) # one primitive root on modulo p. d = random.randrange( 3, p) # private_key -> have to be greater than 2 for safety. e_2 = cryptoMath.findModInverse(pow(e_1, d, p), p) publicKey = (keySize, e_1, e_2, p) privateKey = (keySize, d) return publicKey, privateKey
def decryptMessage(key, message): keyA, keyB = getKeyParts(key) checkKeys(keyA, keyB, 'decrypt') plainText = '' modInverseOfkeyA = cryptoMath.findModInverse(keyA, len(SYMBOLS)) for symbol in message: if symbol in SYMBOLS: symIndex = SYMBOLS.find(symbol) plainText += SYMBOLS[(symIndex - keyB) * modInverseOfkeyA % len(SYMBOLS)] else: plainText += symbol return plainText
def decryptMessage(key, message): ''' >>> decryptMessage(4545, 'VL}p MM{I}p~{HL}Gp{vp pFsH}pxMpyxIx JHL O}F{~pvuOvF{FuF{xIp~{HL}Gi') 'The affine cipher is a type of monoalphabetic substitution cipher.' ''' keyA, keyB = getKeyParts(key) checkKeys(keyA, keyB, 'decrypt') plainText = '' modInverseOfkeyA = cryptoMath.findModInverse(keyA, len(SYMBOLS)) for symbol in message: if symbol in SYMBOLS: symIndex = SYMBOLS.find(symbol) plainText += SYMBOLS[(symIndex - keyB) * modInverseOfkeyA % len(SYMBOLS)] else: plainText += symbol return plainText
def decryptMessage(key, message): ''' >>> decryptMessage(4545, 'VL}p MM{I}p~{HL}Gp{vp pFsH}pxMpyxIx JHL O}F{~pvuOvF{FuF{xIp~{HL}Gi') 'The affine cipher is a type of monoalphabetic substitution cipher.' ''' keyA, keyB = getKeyParts(key) checkKeys(keyA, keyB, 'decrypt') plainText = '' modInverseOfkeyA = cryptoMath.findModInverse(keyA, len(SYMBOLS)) for symbol in message: if symbol in SYMBOLS: symIndex = SYMBOLS.find(symbol) plainText += SYMBOLS[(symIndex - keyB) * modInverseOfkeyA % len(SYMBOLS)] else: plainText += symbol return plainText
def decrypt_message(key: int, message: str) -> str: """ >>> decrypt_message(4545, 'VL}p MM{I}p~{HL}Gp{vp pFsH}pxMpyxIx JHL O}F{~pvuOvF{FuF' ... '{xIp~{HL}Gi') 'The affine cipher is a type of monoalphabetic substitution cipher.' """ keyA, keyB = divmod(key, len(SYMBOLS)) check_keys(keyA, keyB, "decrypt") plainText = "" modInverseOfkeyA = cryptomath.findModInverse(keyA, len(SYMBOLS)) for symbol in message: if symbol in SYMBOLS: symIndex = SYMBOLS.find(symbol) plainText += SYMBOLS[(symIndex - keyB) * modInverseOfkeyA % len(SYMBOLS)] else: plainText += symbol return plainText
def generateKey(keySize): print('Generating prime p...') p = rabinMiller.generateLargePrime(keySize) print('Generating prime q...') q = rabinMiller.generateLargePrime(keySize) n = p * q print('Generating e that is relatively prime to (p - 1) * (q - 1)...') while True: e = random.randrange(2 ** (keySize - 1), 2 ** (keySize)) if cryptoMath.gcd(e, (p - 1) * (q - 1)) == 1: break print('Calculating d that is mod inverse of e...') d = cryptoMath.findModInverse(e, (p - 1) * (q - 1)) publicKey = (n, e) privateKey = (n, d) return (publicKey, privateKey)
def generateKey(keySize): print('Generating prime p...') p = rabinMiller.generateLargePrime(keySize) print('Generating prime q...') q = rabinMiller.generateLargePrime(keySize) n = p * q print('Generating e that is relatively prime to (p - 1) * (q - 1)...') while True: e = random.randrange(2 ** (keySize - 1), 2 ** (keySize)) if cryptoMath.gcd(e, (p - 1) * (q - 1)) == 1: break print('Calculating d that is mod inverse of e...') d = cryptoMath.findModInverse(e, (p - 1) * (q - 1)) publicKey = (n, e) privateKey = (n, d) return (publicKey, privateKey)