 -from Crypto.Cipher import Blowfish
 +from Cryptodome.Cipher import Blowfish
  
- from streamlink.plugin import Plugin, PluginArgument, PluginArguments
+ from streamlink.plugin import Plugin, PluginArgument, PluginArguments, pluginmatcher
  from streamlink.plugin.api import useragents, validate
 diff --git a/src/streamlink/plugins/steam.py b/src/streamlink/plugins/steam.py
-index 0139a34..348e4d4 100644
+index d20a5ff..d497ab6 100644
 --- a/src/streamlink/plugins/steam.py
 +++ b/src/streamlink/plugins/steam.py
 @@ -4,8 +4,8 @@ import re

 10 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/setup.py b/setup.py
index 9db3a46..974b216 100644
--- a/setup.py
+++ b/setup.py
@@ -22,7 +22,7 @@ if environ.get("STREAMLINK_USE_PYCRYPTO"):
     deps.append("pycrypto")
 else:
     # this version of pycryptodome is known to work and has a Windows wheel for py2.7, py3.3-3.6

-from Crypto.Cipher import AES
+from Cryptodome.Cipher import AES
 
 from streamlink.plugin import Plugin, pluginmatcher
 from streamlink.plugin.api import validate
diff --git a/src/streamlink/stream/hls.py b/src/streamlink/stream/hls.py
index 13a8766..72a586c 100644
--- a/src/streamlink/stream/hls.py
+++ b/src/streamlink/stream/hls.py
@@ -8,9 +8,9 @@ from typing import List, NamedTuple, Optional, Union
 from urllib.parse import urlparse
 
 # noinspection PyPackageRequirements
-from Crypto.Cipher import AES
+from Cryptodome.Cipher import AES
 # noinspection PyPackageRequirements
-from Crypto.Util.Padding import unpad
+from Cryptodome.Util.Padding import unpad
 from requests import Response
 from requests.exceptions import ChunkedEncodingError
 
diff --git a/src/streamlink/utils/crypto.py b/src/streamlink/utils/crypto.py
index abc3901..a71203f 100644
--- a/src/streamlink/utils/crypto.py
