SQL

テキストの暗号化と復号化

パスフレーズ(パスワード)でテキストの暗号化と復号化をすることができます。

    declare @passphrase varchar(64)
    declare @value_to_encrypt varchar(64)
    declare @value_of_encrypt varbinary(64)
    declare @value_of_decrypt varchar(64)

    set @passphrase = 'passphrase'
    set @value_to_encrypt = 'value_to_encrypt'
    set @value_of_encrypt = encryptbypassphrase(@passphrase, @value_to_encrypt)
    set @value_of_decrypt = decryptbypassphrase(@passphrase, @value_of_encrypt)

    print @value_of_encrypt
    print @value_of_decrypt

    --------
    0x01000000DDE0C5C7CD6DB3E37DF76F4AB970872BF0765BE2D891C787FA998A4D2FD0B6D686F498DE457639E6
    value_to_encrypt

encryptbypassphraseではランダムな暗号化キーまたは初期化子を使用しているようです。同じパフフレーズで同じテキストを暗号化しても、戻り値は常に異なります。

encryptbypassphraseの戻り値の長さは暗号化するテキストの長さ+αという感じです。パスフレーズの長さにはよりません。

decryptbypassphraseの戻り値はvarbinaryです。

(2009/04/20 初稿)