初心者です。あるデータとパスワードを暗号化するプログラムを、pycryptoを使用して作っていたところ、以下のようなエラーが出ました。
    

File "C:\Users\******\Desktop\Python36\Python教科書\crypto-test.py", line 51, in <module>
    enc = encrypt(password, message)
  File "C:\Users\******\Desktop\Python36\Python教科書\crypto-test.py", line 30, in encrypt
    aes = AES.new(password, mode, iv)
  File "C:\Users\******\Desktop\Python36\lib\site-packages\Crypto\Cipher\AES.py", line 206, in new
    return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
  File "C:\Users\******\Desktop\Python36\lib\site-packages\Crypto\Cipher\__init__.py", line 79, in _create_cipher
    return modes[mode](factory, **kwargs)
  File "C:\Users\******\Desktop\Python36\lib\site-packages\Crypto\Cipher\_mode_cbc.py", line 253, in _create_cbc_cipher
    return CbcMode(cipher_state, iv)
  File "C:\Users\******\Desktop\Python36\lib\site-packages\Crypto\Cipher\_mode_cbc.py", line 96, in __init__
    c_uint8_ptr(iv),
  File "C:\Users\******\Desktop\Python36\lib\site-packages\Crypto\Util\_raw_api.py", line 196, in c_uint8_ptr
    raise TypeError("Object type %s cannot be passed to C code" % type(data))
TypeError: Object type <class 'str'> cannot be passed to C code

これはC言語かpycryptoに関することが原因なのでしょうか。ancondaをインストール済みです。

元のプログラムはこちらです。

from Crypto.Cipher import AES
import base64


# 暗号化したいデータとパスワードを指定

message = "自分がしてほしいと思うことをヒトのもするように。"
password = "xxxxxxxxxx"     # 適当なパスワードを設定
iv = "L3f4mlTJtCIPV9af"     # 初期化ベクトル(16文字で適当な値を設定)
mode = AES.MODE_CBC     # 暗号化モードを指定


# 特定の長さの倍数にするため空白でデータを埋める関数

def mkpad(s, size):
    s = s.encode("utf-8")       # UTF-8文字列をバイト列に変換する
    pad = b' ' * (size - len(s) % size)     # 特定の長さの倍数にするための空白を生成
    return s + pad


# 暗号化する

def encrypt(password, data):
    # 特定の長さに調節する
    password = mkpad(password, 16)      # 16の倍数にそろえる
    data = mkpad(data, 16)      # バイト列に変換し16の倍数に揃える
    password = password[:16]        # ちょうど16文字に揃える

    # 暗号化
    aes = AES.new(password, mode, iv)
    data_cipher = aes.encrypt(data)
    return base64.b64encode(data_cipher).decode("utf-8")


# 複合化する

def decrypt(password, encdata):
    # パスワードの文字数を調整
    password = mkpad(password, 16)      # 16の倍数に揃える
    password = password[:16]        # ちょうど16文字に揃える

    # 複合化
    aes = AES.new(password, mode, iv)
    encdata = base64.b64decode(encdata)     # 暗号化データをBASE64でデコードしてバイト列に
    data = aes.decrypt(encdata)     # 複合化
    return data.decode("utf-8")


# 暗号化する
enc = encrypt(password, message)

# 複合化する
dec = decrypt(password, enc)


# 結果を表示する

print("暗号化", enc)
print("複合化", dec)

何かいい解決策があれば教えていただきたいです。お願いします。