Beispiel #1
0
def encrypt_all(password, method, op, data):
    if method is not None and method.lower() == 'table':
        method = None
    if not method:
        [encrypt_table, decrypt_table] = init_table(password)
        if op:
            return string.translate(data, encrypt_table)
        else:
            return string.translate(data, decrypt_table)
    else:
        import M2Crypto.EVP
        result = []
        method = method.lower()
        (key_len, iv_len) = method_supported[method]
        (key, _) = EVP_BytesToKey(password, key_len, iv_len)
        if op:
            iv = random_string(iv_len)
            result.append(iv)
        else:
            iv = data[:iv_len]
            data = data[iv_len:]
        if method == 'salsa20-ctr':
            cipher = encrypt_salsa20.Salsa20Cipher(method, key, iv, op)
        elif method == 'rc4-md5':
            cipher = encrypt_rc4_md5.create_cipher(method, key, iv, op)
        else:
            cipher = M2Crypto.EVP.Cipher(method.replace('-', '_'), key, iv,
                                         op, key_as_bytes=0, d='md5',
                                         salt=None, i=1, padding=1)
        result.append(cipher.update(data))
        return ''.join(result)
Beispiel #2
0
    def get_cipher(self, password, method, op, iv=None):
        password = password.encode('utf-8')
        method = method.lower()
        m = self.get_cipher_len(method)
        if m:
            key, iv_ = EVP_BytesToKey(password, m[0], m[1])
            if iv is None:
                iv = iv_
            iv = iv[:m[1]]
            if op == 1:
                # this iv is for cipher not decipher
                self.cipher_iv = iv[:m[1]]
            if method == 'salsa20-ctr':
                return encrypt_salsa20.Salsa20Cipher(method, key, iv, op)
            elif method == 'rc4-md5':
                return encrypt_rc4_md5.create_cipher(method, key, iv, op)
            else:
                import M2Crypto.EVP
                return M2Crypto.EVP.Cipher(method.replace('-', '_'),
                                           key,
                                           iv,
                                           op,
                                           key_as_bytes=0,
                                           d='md5',
                                           salt=None,
                                           i=1,
                                           padding=1)

        logging.error('method %s not supported' % method)
        sys.exit(1)
def encrypt_all(password, method, op, data):
    if method is not None and method.lower() == 'table':
        method = None
    if not method:
        [encrypt_table, decrypt_table] = init_table(password)
        if op:
            return string.translate(data, encrypt_table)
        else:
            return string.translate(data, decrypt_table)
    else:
        import M2Crypto.EVP
        result = []
        method = method.lower()
        (key_len, iv_len) = method_supported[method]
        (key, _) = EVP_BytesToKey(password, key_len, iv_len)
        if op:
            iv = random_string(iv_len)
            result.append(iv)
        else:
            iv = data[:iv_len]
            data = data[iv_len:]
        if method == 'salsa20-ctr':
            cipher = encrypt_salsa20.Salsa20Cipher(method, key, iv, op)
        elif method == 'rc4-md5':
            cipher = encrypt_rc4_md5.create_cipher(method, key, iv, op)
        else:
            cipher = M2Crypto.EVP.Cipher(method.replace('-', '_'), key, iv,
                                         op, key_as_bytes=0, d='md5',
                                         salt=None, i=1, padding=1)
        result.append(cipher.update(data))
        return ''.join(result)
Beispiel #4
0
    def get_cipher(self, password, method, op, iv=None):
        password = password.encode('utf-8')
        method = method.lower()
        m = self.get_cipher_len(method)
        if m:
            key, iv_ = EVP_BytesToKey(password, m[0], m[1])
            if iv is None:
                iv = iv_
            iv = iv[:m[1]]
            if op == 1:
                # this iv is for cipher not decipher
                self.cipher_iv = iv[:m[1]]
            if method == 'salsa20-ctr':
                return encrypt_salsa20.Salsa20Cipher(method, key, iv, op)
            elif method == 'rc4-md5':
                return encrypt_rc4_md5.create_cipher(method, key, iv, op)
            else:
                import M2Crypto.EVP
                return M2Crypto.EVP.Cipher(method.replace('-', '_'), key, iv,
                                           op, key_as_bytes=0, d='md5',
                                           salt=None, i=1, padding=1)

        logging.error('method %s not supported' % method)
        sys.exit(1)