def set_context_key_encrypt_decrypt_number(number: int, p: int, q: int): """ Gera chaves privadas e públicas a partir dos parâmetros 'p' e 'q', criptografa o número informado a partir do pâmetro number e posteriormente descriptografa o resultado. Todos os estados são salvos em um dicionário como contexto da criptografia para análise. As seguintes função são utilizadas para gerar esse contexto do dicionário: :func:`calculate_n <rsa_core.rsa.key.calculate_n>` :func:`calculate_tocient <rsa_core.rsa.key.calculate_tocient>` :func:`select_e <rsa_core.rsa.key.select_e>` :func:`calculate_d <rsa_core.rsa.key.calculate_d>` :func:`encrypt_number <rsa_core.rsa.encrypt.encrypt_number>` :func:`decrypt_number <rsa_core.rsa.decrypt.decrypt_number>` :param number: número inteiro que representa o número a ser criptografado :param p: número primo qualquer :param q: número primo qualquer :return: dicionário contento as seguintes chaves: 'plain_text', 'p', 'q', 'n', 'tocient', 'e', 'd', 'public_key', 'private_key', 'encrypted_text' e 'decrypted_text' """ context = {} context['plain_text'] = number context['p'] = p context['q'] = q context['n'] = calculate_n(p, q) context['tocient'] = calculate_tocient(p, q) context['e'] = select_e(context['tocient']) context['d'] = calculate_d(context['e'], context['tocient']) context['public_key'] = (context['n'], context['e']) context['private_key'] = (context['n'], context['d']) context['encrypted_text'] = encrypt_number(context['plain_text'], context['n'], context['e']) context['decrypted_text'] = decrypt_number(context['encrypted_text'], context['n'], context['d']) return context
def set_context_key(p: int, q: int): """ Gera chaves privadas e públicas a partir dos parâmetros 'p' e 'q'. Todos os estados são salvos em um dicionário como contexto para análise. As seguintes função são utilizadas para gerar esse contexto do dicionário: :func:`calculate_n <rsa_core.rsa.key.calculate_n>` :func:`calculate_tocient <rsa_core.rsa.key.calculate_tocient>` :func:`select_e <rsa_core.rsa.key.select_e>` :func:`calculate_d <rsa_core.rsa.key.calculate_d>` :param p: número primo qualquer :param q: número primo qualquer :return: dicionário contento as seguintes chaves: 'p', 'q', 'n', 'tocient', 'e', 'd', 'public_key', 'private_key' """ context = {} context['p'] = p context['q'] = q context['n'] = calculate_n(p, q) context['tocient'] = calculate_tocient(p, q) context['e'] = select_e(context['tocient']) context['d'] = calculate_d(context['e'], context['tocient']) context['public_key'] = (context['n'], context['e']) context['private_key'] = (context['n'], context['d']) return context
def set_context_key_encrypt_string(text: str, p: int, q: int): """ Gera chaves privadas e públicas a partir dos parâmetros 'p' e 'q', e posteriormente criptografa o texto informado a partir do pâmetro text. Todos os estados são salvos em um dicionário como contexto da criptografia para análise. As seguintes função são utilizadas para gerar esse contexto do dicionário: :func:`transform_string_to_number <rsa_core.rsa.util.transform_string_to_number>` :func:`calculate_n <rsa_core.rsa.key.calculate_n>` :func:`calculate_tocient <rsa_core.rsa.key.calculate_tocient>` :func:`select_e <rsa_core.rsa.key.select_e>` :func:`calculate_d <rsa_core.rsa.key.calculate_d>` :func:`encrypt_string <rsa_core.rsa.encrypt.encrypt_string>` :param text: string que representa o texto a ser criptografado :param p: número primo qualquer :param q: número primo qualquer :return: dicionário contento as seguintes chaves: 'plain_text', 'converted_text', 'p', 'q', 'n', 'tocient', 'e', 'd', 'public_key' e 'encrypted_text' """ context = {} context['plain_text'] = text context['converted_text'] = transform_string_to_number(text) context['p'] = p context['q'] = q context['n'] = calculate_n(p, q) context['tocient'] = calculate_tocient(p, q) context['e'] = select_e(context['tocient']) context['d'] = calculate_d(context['e'], context['tocient']) context['public_key'] = (context['n'], context['e']) context['encrypted_text'] = encrypt_string(context['plain_text'], context['n'], context['e']) return context
def setUp(self): self.p = 17 self.q = 11 self.n = calculate_n(self.p, self.q) self.phi = calculate_tocient(self.p, self.q) self.e = 7 self.d = calculate_d(self.e, self.phi) self.number = 88 self.encrypted_number = 11 self.text = "i" self.encrypted_text = 96
def setUp(self): self.p = 17 self.q = 11 self.n = calculate_n(self.p, self.q) self.phi = calculate_tocient(self.p, self.q) self.e = select_e(self.phi) self.d = calculate_d(self.e, self.phi) self.number = 88 self.text = "i" self.encrypted_number = encrypt_number(self.number, self.n, self.e) self.encrypted_text = encrypt_string(self.text, self.n, self.e)
def setUp(self): self.p = 17 self.q = 11 self.n = calculate_n(self.p, self.q) self.phi = calculate_tocient(self.p, self.q) self.e = select_e(self.phi) self.d = calculate_d(self.e, self.phi) self.number = 88 self.encrypted_number = encrypt_number(88, self.n, self.e) self.decrypted_number = decrypt_number(44, self.n, self.d) self.text = "i" self.converted_text = 105 self.encrypted_text = encrypt_string("i", self.n, self.e) self.decrypted_text = decrypt_string(95, self.n, self.d) self.public_key = (self.n, self.e) self.private_key = (self.n, self.d)
def test_not_relatively_prime(self): phi = calculate_tocient(self.p, self.q) e = 8 self.assertFalse(is_relatively_prime(e, phi), NOT_PRIME_MESSAGE)
def test_relatively_prime(self): phi = calculate_tocient(self.p, self.q) e = select_e(phi) self.assertTrue(is_relatively_prime(e, phi), PRIME_MESSAGE)