AES暗号化アルゴリズムの基本を紹介する

ばかげたことを言わないでください。
まず、暗号化されたURL アクセスアドレスを確認します。

暗号化の手順を紹介する、Baiduは知っています!

AES

AES、Advanced Encryption Standard(英語:Advanced Encryption Standard、略称:AES)、別名暗号化におけるRijndael暗号化は、米国連邦政府によって採用されたブロック暗号化標準です。この標準は、元のDESを置き換えるために使用され、多くの関係者によって分析されており、世界中で広く使用されています。厳密に言うと、AESとRijndael暗号化はまったく同じではありません(ただし、2つは実際のアプリケーションでは交換可能です)。Rijndael暗号化はより広い範囲のブロックとキー長をサポートできるため、AESのブロック長は次のように固定されます。 128ビットの場合、キーの長さは128、192、または256ビットです。Rijndaelが使用するキーとブロックの長さは32ビットの整数倍で、128ビットを下限、256ビットを上限として使用できます。AES-ECB、AES-CBC、AES-CTR、AES-OFB、AES-CFBを含む

平文

暗号化されていないテキスト(または文字列)を指します。これは、ほとんどの人が理解できることを意味し、暗号用語に属します。[1]通信システムでは、テキスト、ビットマップ、デジタル化された音声、デジタル化されたビデオ画像などのビットストリームである場合があります。一般的に、プレーンテキストは、意味のある文字またはビットセット、または特定のパブリックエンコーディング標準を通じて取得できるメッセージと考えることができます。特定の暗号化アルゴリズムが機能した後、関数の後のテキストは暗号文と呼ばれます。暗号文の場合、平文を取得するには、暗号化アルゴリズムに対応する復号化アルゴリズムを使用して復号化し、平文を復元する必要があります。

キー

平文の暗号化に使用されるパスワード(同じ鍵が対称暗号化の暗号化と復号化に使用されます)

キー転送

ネットワーク上で直接送信することはできません。そうしないと、キーが漏洩します。通常、キーは非対称暗号化アルゴリズムで暗号化されてから、ネットワーク経由で相手に送信されるか、直接対面で話し合われます。キーが漏洩してはなりません。漏洩すると、攻撃者が暗号文を復元し、機密データを盗みます。

暗号化機能

AES暗号化関数がEで、C = E(K、P)であるとします。ここで、Pは平文、Kは鍵、Cは暗号文です。つまり、平文Pと鍵Kが暗号化関数のパラメーターとして入力されると、暗号化関数Eは暗号文Cを出力します。

復号化機能

AES復号化関数がDで、P = D(K、C)であるとします。Cは暗号文、Kは鍵、Pは平文です。つまり、暗号文Cと鍵Kが復号化関数のパラメーターとして入力された場合、復号化関数は平文Pを出力します。

暗号文ソース

おそらく暗号化機能によって処理されたデータを意味します

最後に、コードをテストしましょう!
Cryptodomeの問題が発生したため、Cryptoがロードされない問題解決するための解決策は次のとおりです

from Cryptodome.Cipher import AES
import base64


BLOCK_SIZE = 16  # Bytes
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * \
                chr(BLOCK_SIZE - len(s) % BLOCK_SIZE)
unpad = lambda s: s[:-ord(s[len(s) - 1:])]


def Encrypt(key, data):
    """
       AES长度为:32, 48, or 64,
    """
    key = key.encode('utf8')
    data = pad(data)
    cipher = AES.new(key, AES.MODE_ECB)
    # 加密后得到的是bytes类型的数据,使用Base64进行编码,返回byte字符串
    result = cipher.encrypt(data.encode())
    encodestrs = base64.b64encode(result)
    enctext = encodestrs.decode('utf8')
    return enctext

def Decrypt(key, data):
    """
     AES长度为:32, 48, or 64,
    """
    key = key.encode('utf8')
    data = base64.b64decode(data)
    cipher = AES.new(key, AES.MODE_ECB)

    text_decrypted = unpad(cipher.decrypt(data))
    text_decrypted = text_decrypted.decode('utf8')
    return text_decrypted


if __name__ == '__main__':
    # 密钥
    key = '1c55c819appuiop0'
    # 需要加密数据
    data = 'my name is soubei'

    ecdata = Encrypt(key, data)
    print(ecdata)
    dec = Decrypt(key, ecdata)
    print(dec)

演算結果


+P0/Pog35SVVpsVs1f7dWR1mplJfrreP/WDMcAb78AE=
my name is soubei

Process finished with exit code 0

おすすめ

転載: blog.csdn.net/weixin_37254196/article/details/108214235