【问题标题】:VB.Net error to restore picture path using MySQL AES_ENCRYPT / AES_DECRYPT使用 MySQL AES_ENCRYPT / AES_DECRYPT 恢复图片路径的 VB.Net 错误
【发布时间】:2015-07-23 12:33:15
【问题描述】:

这是我的第一个问题,我希望以正确的格式发布。

我使用 vb.Net 中的 MySQL AES_ENCRYPT / AES_DECRYPT 来存储和获取用户图片和文件位置。即使是特殊的西班牙语字符也一切正常,除非我得到路径。

例如

保存路径 = C:\Users\User\Pictures 并获取 = C:UsersUserPictures

我尝试使用许多代码也搜索 MySQL 文档但没有成功仍然跳过反斜杠。

如果可以给我一个解决这个问题的方向。

Dim MySQLQuery As String = "INSERT INTO `Agents` (`User_Name`, `User_Pic`) 
  VALUES (AES_ENCRYPT('" & txtUserName.Text & "', '" & MyPass & "'), 
    AES_ENCRYPT('" & txtUserPic.Text & "', '" & MyPass & "'"

MySQLQuery = "SELECT AES_DECRYPT(`User_Name`, '" & MyPass & "')
  AS UName, AES_DECRYPT(`User_Pic`, '" & MyPass & "') AS UPic 
  FROM `Agents`"

MsgBox(MySQLReader.GetString("UName") & vbCrLf &  
  MySQLReader.GetString("UPic")

即使我尝试在 MySQL 上使用其他数据类型,如 VARBINARY、VARCHAR、TINYTEXT 有和没有 UTF8、LATIN1 等,并且总是相同,请跳过反斜杠。

【问题讨论】:

    标签: mysql vb.net


    【解决方案1】:

    AES_ENCRYPT 中,输入的数据被视为带有转义字符的二进制字符串。因此,当您加密\ 并再次解密时,您会得到一个空字符串。要保留\,您必须预先解析您的字符串并将\ 替换为\\。这将在解密中保留您的\(但解密后的字符串将只显示一个\)。

    例子:

     SELECT AES_DECRYPT(AES_ENCRYPT("s\ad",'test'),'test');
    

    返回:sad(所以不是很好的返回)。

     SELECT AES_DECRYPT(AES_ENCRYPT(REPLACE("s\ad","\","\\"),'test'),'test');
    

    返回:s\ad

    还是很伤心。

    最后:100% mysql相关,0% vb相关。

    【讨论】:

    • 抱歉耽搁了,虽然我知道这个网站.. 关于您的帮助。 TY :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 2018-08-05
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多