iT邦幫忙

0

SQL SERVER字串以變數代入加密失敗

使用的SQL SERVER版本是2012標準版,以字串先加密再解密後可以得到原先的字串,這部分完全正常,請參考底下第一張圖

但是當改為變數時,先加密再解密後發現所得的內容和原先字串不同,請參考底下第二張圖,請問是什麼原因會造成這樣?應該要如何解決?

SQL菜鳥先在這裡謝過。

正常的結果
https://ithelp.ithome.com.tw/upload/images/20210517/201083329KzMhac4gO.png

失敗的結果
https://ithelp.ithome.com.tw/upload/images/20210517/20108332zWd1F5c0yf.png

grande iT邦新手 5 級 ‧ 2021-05-17 11:31:02 檢舉
目前測試結果:

單純SQL指令:
變數形態用VARCHAR就正常
用NVARCHAR則會失敗

如果再加上asp.net,程式碼裡面的SQL指令:
用 (…… + TextBox1.Text + ……)會正常
用(…… @VAR ……)會失敗
微笑 iT邦研究生 5 級 ‧ 2021-05-17 11:57:42 檢舉
恕刪
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
純真的人
iT邦大師 1 級 ‧ 2021-05-17 15:42:14
最佳解答

目前手邊沒有~

但我認為你應該要先把原先變數nvarchar轉換為varchar才是正確的
不是加密完~事後轉為varchar

Convert(varchar,@AAA)
Convert(varchar,@BBB)

然後你那個錯誤問題的欄位只有一個4 (你的紅色框框)
是應該是varchar(1)的關係~你改成varchar(64)看看

grande iT邦新手 5 級 ‧ 2021-05-19 15:27:27 檢舉

忙到今天才有時間進行測試,果然是形態的問題,加密前強制轉換為VARCHAR就OK了,感謝大大的提示。

我要發表回答

立即登入回答