cipher#

class windtalker.cipher.BaseCipher[source]#

Base cipher class.

Any cipher utility class that using any encryption algorithm can be inherited from this base class. The only method you need to implement is BaseCipher.encrypt() and BaseCipher.decrypt(). Because once you can encrypt binary data, then you can encrypt text, file, and directory.

b64encode_str(text: str) str[source]#

base64 encode a text, return string also.

b64decode_str(text: str) str[source]#

base64 decode a text, return string also.

encrypt(binary: bytes, *args, **kwargs) bytes[source]#

Overwrite this method using your encrypt algorithm.

Parameters:

binary – binary data you need to encrypt

Returns:

encrypted_binary, encrypted binary data

decrypt(binary: bytes, *args, **kwargs) bytes[source]#

Overwrite this method using your decrypt algorithm.

Parameters:

binary – binary data you need to decrypt

Returns:

decrypted_binary, decrypted binary data

encrypt_text(text: str, *args, **kwargs) str[source]#

Encrypt a string.

decrypt_text(text: str, *args, **kwargs) str[source]#

Decrypt a string.

encrypt_file(path: Union[str, Path, Path], output_path: Optional[Union[str, Path, Path]] = None, overwrite: bool = False, stream: bool = True, enable_verbose: bool = True, **kwargs)[source]#

Encrypt a file. If output_path are not given, then try to use the path with a surfix appended. The default automatical file path handling is defined here windtalker.files.get_encrypted_file_path()

Parameters:
  • path – path of the file you need to encrypt

  • output_path – encrypted file output path

  • overwrite – if True, then silently overwrite output file if exists

  • stream – if it is a very big file, stream mode can avoid using too much memory

  • enable_verbose – trigger on/off the help information

decrypt_file(path: Union[str, Path, Path], output_path: Optional[Union[str, Path, Path]] = None, overwrite: bool = False, stream: bool = True, enable_verbose: bool = True, **kwargs)[source]#

Decrypt a file. If output_path are not given, then try to use the path with a surfix appended. The default automatical file path handling is defined here windtalker.files.recover_path()

Parameters:
  • path – path of the file you need to decrypt

  • output_path – decrypted file output path

  • overwrite – if True, then silently overwrite output file if exists

  • stream – if it is a very big file, stream mode can avoid using too much memory

  • enable_verbose – boolean, trigger on/off the help information

encrypt_dir(path: Union[str, Path, Path], output_path: Optional[Union[str, Path, Path]] = None, overwrite: bool = False, stream: bool = True, enable_verbose: bool = True)[source]#

Encrypt everything in a directory.

Parameters:
  • path – path of the dir you need to encrypt

  • output_path – encrypted dir output path

  • overwrite – if True, then silently overwrite output file if exists

  • stream – if it is a very big file, stream mode can avoid using too much memory

  • enable_verbose – boolean, trigger on/off the help information

decrypt_dir(path: Union[str, Path, Path], output_path: Optional[Union[str, Path, Path]] = None, overwrite: bool = False, stream: bool = True, enable_verbose: bool = True)[source]#

Decrypt everything in a directory.

Parameters:
  • path – path of the dir you need to decrypt

  • output_path – decrypted dir output path

  • overwrite – if True, then silently overwrite output file if exists

  • stream – if it is a very big file, stream mode can avoid using too much memory

  • enable_verbose – boolean, trigger on/off the help information