# * coding: UTF8 *
"""
加密/解密模块
常量
-----------
.. data:: MODE_ECB
.. data:: MODE_CBC
.. data:: MODE_CTR
"""
[文档]def aes(key, mode, IV):
   """
    初始化一个密码对象 (cipher) 用于加密/解密操作。注意:初始化后, cipher 对象只能用于加密或解密。
    不允许创建一个密码对象(cipher) 同时用于加密()、解密()操作::
        crypto = aes(b"1234" * 4, 1)
        enc = bytearray(32)
        crypto.encrypt(bytes(range(32)), enc)
        print(enc)
        crypto = aes(b"1234" * 4, 1)
        dec = bytearray(32)
        crypto.decrypt(enc, dec)
        print(dec)
   :param key: 加密/解密 秘钥。(bytes格式)
   :param mode: 加密/解密模式:
        * ``1`` (or ``ucryptolib.MODE_ECB``) 表示 电子密码本 (Electronic Code Book).
        * ``2`` (or ``ucryptolib.MODE_CBC``) 表示 密码块链接 (Cipher Block Chaining).
        * ``6`` (or ``ucryptolib.MODE_CTR``) 表示 计数器模式 (Counter mode).
   :param IV: 是CBC模式的初始化向量。在计数器模式下,IV 为计数器的初始值
   :returns: 密码对象 cipher
   """
   pass 
[文档]def encrypt(in_buf, out_buf):
   """
    加密 *in_buf*。
    如果没有给出 *out_buf*,则返回结果为新分配的 `bytes` 对象。否则,结果被写入 可变的缓冲 *out_buf*。
    *in_buf* 和 *out_buf* 也可以使用相同的可变缓冲区。
   :param in_buf: 待加密数据。
   :param out_buf: 加密后输出数据,该参数可以不指定,未指定则在返回参数中携带加密数据。
   :returns: 空 或者 加密后数据
   """
   pass 
[文档]def dencrypt(in_buf, out_buf):
   """
    解密 *in_buf*。
   :param in_buf: 待解密数据。
   :param out_buf: 解密后输出数据,该参数可以不指定,未指定则在返回参数中携带解密数据。
   :returns: 空 或者 解密后数据
   """
   pass