sql >> データベース >  >> RDS >> Mysql

データベースでAES-256-CBCで暗号化された文字列に指定する必要がある長さはどれくらいですか?

    AESのブロックサイズは16バイトなので、

    が必要です。
    • 入力のサイズ。16の最も近い倍数に切り上げられます
    • さらに、入力がすでに16の倍数である場合は、PKCS#5パディングの1ブロックサイズ
    • さらにIV用に16バイト

    これは必ずしも他の暗号モードに適用されるわけではないことに注意してください。

    したがって、20バイトの入力の場合、合計48バイトが必要になります。 ただし 、結果をbase64でエンコードしているため、少なくとも33%多くのスペースが必要です(つまり、スペースを気にする場合は、生のバイトを保存する必要があります)。

    エンコードする前に常に連結する必要があります。そうしないと、複数のパディングバイトシーケンスでスペースを浪費することがよくあります。入力の長さが20バイトの場合、32バイトの暗号文をエンコードすると44バイトになり、IVをエンコードすると24バイトになります(どちらもパディングが必要です)。 エンコード前に連結すると、64バイトしか生成されません。

    IVの長さがわかっているため、エンコード前に連結する場合も区切り文字は必要ありません。

    1 GCMなどのAEAD暗号は、一般的にCBCよりも推奨されますが、認証ハッシュを格納するためにより多くのスペースが必要になることは明らかです。




    1. IDを昇順でテーブルにデータを保存します

    2. NULLの代わりに、SELECTステートメントsqlを使用して結果に「0」を表示するにはどうすればよいですか?

    3. WindowsにOracleDatabaseをインストールする方法

    4. チェッカーラン