我正在使用 CryptoJS 加密敏感字段并将加密值写入数据库。这效果很好。但现在我想使用 javascript CryptoJS.AES.decrypt 方法解密该值并将该值显示到 FormView 中名为“FvActions”的绑定标签。
Show_Decrypt 函数采用三个参数。参数1是从中获取密文的控件名称,并将解密值写入其中。参数2是密文,参数3是CryptoJS用于解密的密钥。这是标签中的 JavaScript:
function Show_Decrypt(tx, str, key) {
var t = "#" + tx;
var s = str.toString();
var ky = key.toString();
var decrypted = CryptoJS.AES.decrypt(s.toString(), ky.toString());
$(t).innerHTML = decrypted;
}
现在这是 Formview 代码
Private Sub fvactions_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles fvactions.ItemDataBound
Dim lbl As Label = e.Item.FindControl("ptLabel")
Dim epcrlbl As Label = e.Item.FindControl("Lblepcr")
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "keyLicDtlz", "Show_Decrypt('" & lbl.ClientID.ToString & "','" & lbl.Text.Trim & "','" & epcrlbl.Text.Trim & "');", True)
End Sub
我可以在控制台中看到参数正在传递给函数,但是显示以下错误。 未捕获的语法错误:无效或意外的标记 该错误似乎是在传入参数 #2 中的“+”号处生成的。 Show_Decrypt('ContentPlaceHolder1_fvactions_ptLabel_0','U2FsdGVkX1+6tq8s40Z63HaZMOmvUpeYioFwZMFG9Ps=','CF777');Show_Decrypt(ContentPlaceHolder1_fvactions_ptLabel_0,U2FsdGVkX1+6tq8s40Z63HaZMO mvUpeYioFwZMFG9Ps=,CF777);
我希望我已经提供了足够的信息。请帮忙。
想通了!
我必须使用 string.replace() 函数来替换导致意外令牌问题的特殊字符,然后在调用解密函数时将特殊字符替换回来。