私たちの製品には、Windows API関数CryptEncryptを介して暗号化されたSQL文字列(MSSQLサーバーまたはsybaseSQLのいずれかを選択)として、アプリケーションのデータベースに長い間データが保存されている状況があります。 (直接および復号化可能)
問題は、CryptEncryptが出力にNULLを生成する可能性があることです。つまり、データベースに格納されると、文字列操作によって、ある時点でCipherTextが切り捨てられます。
理想的には、NULLを含まないCipherTextを生成するアルゴリズムを使用します。これにより、既存のデータベースへの変更が最小限に抑えられます(列を文字列からバイナリに変更し、コードを文字列ではなくバイナリに処理する)データベースのアップグレード時に、既存のデータを復号化し、新しいアルゴリズムで再暗号化するだけです。
データベースはすでに適度に安全な環境(オープンネットワーク/インターウェブではない)にあるため、アルゴリズムは最も安全である必要はありませんが、ROT13(頭の中でほとんど解読できる)よりも優れている必要があります今!)
編集:ところで、暗号文を暗号文に変更する特別な理由はありますか?暗号文はもっと広く使われているようです...