サイトをFreeBSD13+python3.9+Bottleで作り直すメモ(14) MYSQLで暗号化

本サイトでは使っていないが、MySQLの暗号化、復号化でちょっとハマったのでメモ。

MySQL5以前では、 ENCODEDECODE という関数が用意されており、これでテキストの暗号化と復号化ができるようになっていた。しかしMySQL8.0ではこの関数は廃止された。マニュアルによれば、代わりに AES_ENCRYPT('テキスト', 'パスワード')AES_DECRYPT(data, 'パスワード') を使えとのこと。

AES_ENCRYPT の方は ENCODE と同様データの保存先をblob型にしておけばOK(ぐぐってみるとblob型だとデータが大きくなりすぎるから推奨されないっぽいけど短いテキストを対象とするならなら別にいいよね)。問題は AES_DECRYPT の方で、そのままだとバイナリデータになってしまう。テキストとして取り出すには CAST(AES_DECRYPT(data, 'パスワード') AS CHAR) として文字列に変換する必要がある。

コメント(0)

コメントを投稿する際はここをクリック


Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。