私がやっていることは、新規顧客を挿入するときに PHP でデータを暗号化することです。ただし、後で SQL Server コマンドを使用してテーブル全体を復号化する必要があります。ただし、DecryptByKey がVarbinary
. Varbinary
ただし、PHP で暗号化すると、変数は生成されません。2 つの暗号化アルゴリズムは同じでなければなりません。
私は何を間違っていますか?
暗号化に使用する PHP:
function fnE($sV, $sS)
{
return trim(
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
$sS, $sV,
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND)
)
)
);
}
これにより、"James" が "/mucJj8Znec7aygh3ly2DI45bSxyv6vG4dzFz4SVVHk=" に変換され、列名 'first_name' の 'customer_details' というテーブルに挿入されます。
次に、SQL Server で、PHP で使用したものと同じパスワードでマスター キーを作成します。
それから私は:
Create Symmetric Key AdvSym
With Algorithm =AES_256
Encryption by Certificate AdvCert
GO
しかし、復号化しようとすると常にNULLが表示されます:
Select first_name,
Convert(Varchar(100), DecryptByKey(first_name)) as DecryptedName from customer_details
go
編集:SQLのみを使用する場合、暗号化と復号化に成功していることを知っておく必要があります。ただし、PHP を使用して暗号化し、SQL を使用して復号化できるようにする必要があります。