【问题标题】:mysql encoding encrypted textmysql编码加密文本
【发布时间】:2012-02-06 08:08:30
【问题描述】:

我目前正在尝试从我的共享 inmotionhosting 帐户(最近收到了 AWEFUL 服务)切换到我设置的 Amazon EC2 服务器。我无法在 EC2 帐户中使用加密功能。

在我的 PHP 代码中,所有文本在放入 SQL 之前都经过 mcrypt 加密。我推断这些 mcrypt 字符是我所有查询抛出错误的原因。 (我知道这是因为编码问题,但是关于这个主题的谷歌搜索并不是很清楚我需要把注意力集中在哪里。)

解释问题的更简化的方式。在我的新主机帐户上,此 SQL 查询不起作用:

UPDATE mydatabase.clients SET firstname='\'å».”é¶Q' WHERE id_client=65

但这确实

UPDATE mydatabase.clients SET firstname='Test' WHERE id_client=65

这告诉我 mcrypt 函数正在使用 SQL 数据库不理解的字符,因此查询不起作用。

给你一些其他信息...

当我在工作数据库上运行“SHOW VARIABLES LIKE 'character_set_%'”时,我得到了这个:

Variable_name              Value
character_set_client       utf8
character_set_connection   utf8
character_set_database     latin1
character_set_filesystem   binary
character_set_results      utf8
character_set_server       latin1
character_set_system       utf8

当我在非工作数据库上这样做时,我得到:

Variable_name              Value
character_set_client       utf8
character_set_connection   utf8
character_set_database     utf8
character_set_filesystem   binary
character_set_results      utf8
character_set_server       utf8
character_set_system       utf8

看到character_set_database的不同,跑了这行代码:

ALTER DATABASE mydatabase 默认字符集 latin1

成功将 character_set_database 更改为“latin1”以匹配另一个,但没有解决问题。

最后,我表中的所有列都使用排序规则“latin1_swedish_ci”

您能提供的任何帮助都将非常感激!

【问题讨论】:

    标签: mysql encoding collation mcrypt


    【解决方案1】:

    将您的加密字符串存储为二进制(或类似)类型。还要确保您正在转义加密的字符串。两者都是正确执行此操作的重要部分!

    我一直在使用 MySQL 和 Mcrypt,我将我的加密数据和初始化向量存储为二进制文件,并在将所有这些字符串放入查询之前对其进行转义。像魅力一样工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 2013-04-16
      • 2019-01-24
      相关资源
      最近更新 更多