예제 #1
0
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
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
def set_context_encrypt_number(number: int, n: int, e: int):
    """
    Criptografa o número informado a partir da chave informada ('n', 'e'). 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:`encrypt_number <rsa_core.rsa.encrypt.encrypt_number>`

    :param number: número inteiro que representa o número a ser criptografado
    :param n: parte da chave pública
    :param e: parte da chave pública
    :return: dicionário contento as seguintes chaves: 'plain_text', 'n', 'e', 'public_key' e 'encrypted_text'
    """
    context = {}
    context['plain_text'] = number
    context['n'] = n
    context['e'] = e
    context['public_key'] = (context['n'], context['e'])
    context['encrypted_text'] = encrypt_number(context['plain_text'], context['n'], context['e'])
    return context
예제 #5
0
 def test_encrypt_number(self):
     encrypted_message = encrypt_number(self.number, self.n, self.e)
     self.assertEqual(encrypted_message, self.encrypted_number,
                      ENCRYPT_MESSAGE)