403Webshell
Server IP : 35.80.110.71  /  Your IP : 216.73.216.221
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/Cryptodome/Cipher/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/Cryptodome/Cipher/__pycache__/_mode_cbc.cpython-312.pyc
�

��e�*��|�dZdgZddlmZddlmZmZmZmZm	Z	m
Z
mZmZddl
mZedd�ZGd�de�Zd	�Zy
)z'
Ciphertext Block Chaining (CBC) mode.
�CbcMode�)�_copy_bytes)�load_pycryptodome_raw_lib�VoidPointer�create_string_buffer�get_raw_buffer�SmartPointer�c_size_t�c_uint8_ptr�is_writeable_buffer)�get_random_byteszCryptodome.Cipher._raw_cbca�
                int CBC_start_operation(void *cipher,
                                        const uint8_t iv[],
                                        size_t iv_len,
                                        void **pResult);
                int CBC_encrypt(void *cbcState,
                                const uint8_t *in,
                                uint8_t *out,
                                size_t data_len);
                int CBC_decrypt(void *cbcState,
                                const uint8_t *in,
                                uint8_t *out,
                                size_t data_len);
                int CBC_stop_operation(void *state);
                c�&�eZdZdZd�Zdd�Zdd�Zy)ra[*Cipher-Block Chaining (CBC)*.

    Each of the ciphertext blocks depends on the current
    and all previous plaintext blocks.

    An Initialization Vector (*IV*) is required.

    See `NIST SP800-38A`_ , Section 6.2 .

    .. _`NIST SP800-38A` : http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf

    :undocumented: __init__
    c	��t�|_tj|j	�t|�t
t|��|jj��}|rtd|z��t|jj	�tj�|_|j�t|�|_
	tdd|�|_	|j|_	ddg|_y)aCreate a new block cipher, configured in CBC mode.

        :Parameters:
          block_cipher : C pointer
            A smart pointer to the low-level block cipher instance.

          iv : bytes/bytearray/memoryview
            The initialization vector to use for encryption or decryption.
            It is as long as the cipher block.

            **The IV must be unpredictable**. Ideally it is picked randomly.

            Reusing the *IV* for encryptions performed with the same key
            compromises confidentiality.
        z)Error %d while instantiating the CBC modeN�encrypt�decrypt)r�_state�raw_cbc_lib�CBC_start_operation�getrr
�len�
address_of�
ValueErrorr	�CBC_stop_operation�release�
block_sizer�iv�IV�_next)�self�block_cipherr�results    �=/usr/lib/python3/dist-packages/Cryptodome/Cipher/_mode_cbc.py�__init__zCbcMode.__init__Ns���""�m����0�0��1A�1A�1C�1<�R��19�#�b�'�1B�15���1G�1G�1I�K����H�%�&�'�
'�
#�4�;�;�?�?�#4�#.�#A�#A�C���
	�����b�'���@��d�D�"�-���	&��'�'������+��
�Nc
��d|jvrtd��dg|_|�tt|��}nF|}t	|�std��t|�t|�k7rtdt|�z��tj|jj�t|�t|�tt|���}|r+|dk(rtd|jz��td|z��|�t|�Sy)	a�Encrypt data with the key and the parameters set at initialization.

        A cipher object is stateful: once you have encrypted a message
        you cannot encrypt (or decrypt) another message using the same
        object.

        The data to encrypt can be broken up in two or
        more pieces and `encrypt` can be called multiple times.

        That is, the statement:

            >>> c.encrypt(a) + c.encrypt(b)

        is equivalent to:

             >>> c.encrypt(a+b)

        That also means that you cannot reuse an object for encrypting
        or decrypting other data with the same key.

        This function does not add any padding to the plaintext.

        :Parameters:
          plaintext : bytes/bytearray/memoryview
            The piece of data to encrypt.
            Its lenght must be multiple of the cipher block size.
        :Keywords:
          output : bytearray/memoryview
            The location where the ciphertext must be written to.
            If ``None``, the ciphertext is returned.
        :Return:
          If ``output`` is ``None``, the ciphertext is returned as ``bytes``.
          Otherwise, ``None``.
        rz*encrypt() cannot be called after decrypt()N�4output must be a bytearray or a writeable memoryview�9output must have the same length as the input  (%d bytes)��3Data must be padded to %d byte boundary in CBC modez%Error %d while encrypting in CBC mode)r�	TypeErrorrrrrr�CBC_encryptrrrr
rr)r�	plaintext�output�
ciphertextr!s     r"rzCbcMode.encrypt}s��H�D�J�J�&��H�I�I��[��
��>�-�c�)�n�=�J��J�&�v�.�� V�W�W��9�~��V��,� �"0�25�i�.�"A�B�B��(�(������):�)4�Y�)?�)4�Z�)@�)1�#�i�.�)A�C�����{� �!V�Y]�Yh�Yh�!h�i�i��D�v�M�N�N��>�!�*�-�-�r$c
��d|jvrtd��dg|_|�tt|��}nF|}t	|�std��t|�t|�k7rtdt|�z��tj|jj�t|�t|�tt|���}|r+|dk(rtd|jz��td|z��|�t|�Sy)	aDecrypt data with the key and the parameters set at initialization.

        A cipher object is stateful: once you have decrypted a message
        you cannot decrypt (or encrypt) another message with the same
        object.

        The data to decrypt can be broken up in two or
        more pieces and `decrypt` can be called multiple times.

        That is, the statement:

            >>> c.decrypt(a) + c.decrypt(b)

        is equivalent to:

             >>> c.decrypt(a+b)

        This function does not remove any padding from the plaintext.

        :Parameters:
          ciphertext : bytes/bytearray/memoryview
            The piece of data to decrypt.
            Its length must be multiple of the cipher block size.
        :Keywords:
          output : bytearray/memoryview
            The location where the plaintext must be written to.
            If ``None``, the plaintext is returned.
        :Return:
          If ``output`` is ``None``, the plaintext is returned as ``bytes``.
          Otherwise, ``None``.
        rz*decrypt() cannot be called after encrypt()Nr&r'r(r)z%Error %d while decrypting in CBC mode)rr*rrrrr�CBC_decryptrrrr
rr)rr.r-r,r!s     r"rzCbcMode.decrypt�s��B�D�J�J�&��H�I�I��[��
��>�,�S��_�=�I��I�&�v�.�� V�W�W��:��#�f�+�-� �"0�25�i�.�"A�B�B��(�(������):�)4�Z�)@�)4�Y�)?�)1�#�j�/�)B�D�����{� �!V�Y]�Yh�Yh�!h�i�i��D�v�M�N�N��>�!�)�,�,�r$)N)�__name__�
__module__�__qualname__�__doc__r#rr�r$r"rr?s���-,�^@�D=r$c�p�|j|�}|jdd�}|jdd�}d||fk(rt|j�}|�
|�
t	d��|}t|�|jk7rt
d|jz��|rt	dt|�z��t||�S)a�Instantiate a cipher object that performs CBC encryption/decryption.

    :Parameters:
      factory : module
        The underlying block cipher, a module from ``Cryptodome.Cipher``.

    :Keywords:
      iv : bytes/bytearray/memoryview
        The IV to use for CBC.

      IV : bytes/bytearray/memoryview
        Alias for ``iv``.

    Any other keyword will be passed to the underlying block cipher.
    See the relevant documentation for details (at least ``key`` will need
    to be present).
    rNr)NNz*You must either use 'iv' or 'IV', not bothz.Incorrect IV length (it must be %d bytes long)zUnknown parameters for CBC: %s)	�_create_base_cipher�popr
rr*rr�strr)�factory�kwargs�cipher_staterrs     r"�_create_cbc_cipherr=�s���&�.�.�v�6�L�	���D�$�	�B�	���D�$�	�B���B�x��
�g�0�0�
1��	�~�
�>��H�I�I�
��
�2�w�'�$�$�$��I� �+�+�,�-�	-���8�3�v�;�F�G�G��<��$�$r$N)r4�__all__�Cryptodome.Util.py3compatr�Cryptodome.Util._raw_apirrrrr	r
rr�Cryptodome.Randomr
r�objectrr=r5r$r"�<module>rCsQ��>��+��1�7�7�7�
/�'�(D�G���$}�f�}�@&%r$

Youez - 2016 - github.com/yon3zu
LinuXploit