請問各位大大,
select * from a where encrypted_password = AES_ENCRYPT(inputpassword,key)
select * from a where AES_DECRYPT(encrypted_password,key) = inputpassword
AES_Decrypt 那個方法 server是否需要自行將 encrypted_password 那一欄所有值 decrypted 之後才與 inputpassword 去比較? 若是, 為何這兩種寫法執行所需要的時間都是一樣的?
究竟哪種寫法才是一般正統寫法?
有沒有連結可給小弟參考一下?
謝謝。
我會用第一種寫法,原因就如您說的第一種寫法加密計算一次,第二種寫法解密計算count(*)次
至於執行時間一樣,可能還是要作一下測試,是不是解密計算比較快?還是table資料不夠多顯示不出差異?
其實我不知道第二種 decrypt 寫法真的是否解密計算count()次 (我心內很不確定又苦無參考....) 若是有話我就不會選這個寫法
若比較的不是 "=" 的話而是 LIKE 的話, encrypt 寫法就不行了, 我們沒辦法將未知的值 %inputpassword% encrypt 後才去比較在 table 內的 encrypted_password (但真的是不是這樣? 我又因沒有參考心內很不確定 ....)
因為我不想整個 table 或有很多 column 需要一起 decrypt 而做成很慢的情況, 所以我用了一些規避方法去避免整個 table decrypt (當要 search encrypted column 的時候)