加密mysql文本信息/欧洲语言支持

加密mysql文本信息/欧洲语言支持,mysql,encryption,utf-8,character-encoding,Mysql,Encryption,Utf 8,Character Encoding,我正在为临终关怀患者和志愿者做一个开源项目。我想支持所有欧洲语言,患者信息必须加密。我目前正在使用以下工具: mysql表charset:charset=utf8 患者信息字段类型(姓名、地址等):varbinary(255) mysql加密:AES_加密 密钥传递为:SHA2('我的秘密密码短语',256) 这些设置是否支持所有欧洲语言?加密方案是否合理?是的,MySQL的AES_ENCRYPT()函数将对utf-8编码的文本字符串进行双向加密。因此,这对于您的跨语言应用程序应该是正确的

我正在为临终关怀患者和志愿者做一个开源项目。我想支持所有欧洲语言,患者信息必须加密。我目前正在使用以下工具:

  • mysql表charset:charset=utf8
  • 患者信息字段类型(姓名、地址等):varbinary(255)
  • mysql加密:AES_加密
  • 密钥传递为:SHA2('我的秘密密码短语',256)
这些设置是否支持所有欧洲语言?加密方案是否合理?

是的,MySQL的AES_ENCRYPT()函数将对utf-8编码的文本字符串进行双向加密。因此,这对于您的跨语言应用程序应该是正确的

AES的输出是一个二进制文本字符串。如果您要将这些数据从客户端来回传递到服务器等,我强烈建议您使用Base-64文本字符串对其进行编码,这样它就可以用传输和存储友好的ASCII表示

TO_BASE64(AES_ENCRYPT(phrase, keyvalue))
将生成这样一个编码字符串,并且

 AES_DECRYPT(FROM_BASE64(coded), keyvalue)
我将解码它

您询问这是否是一种合理的加密方法。如果您正在构建一个web应用程序,我认为它对于受保护的患者数据来说不够安全。为什么不呢?因为你的web应用程序必须知道关键短语才能工作。因为AES是对称加密,所以加密和解密必须使用相同的密钥短语。这意味着它将在您的web服务器上浮动

Web服务器通常比数据库服务器更容易渗透,因为数据库服务器可以位于防火墙后面。所以,如果一个网络罪犯破解了你的系统,他可能会先进入你的网络服务器。然后,他可以轻松地掌握数据库加密密钥短语。事实上,如果你的志愿者可以按患者姓名搜索你的表格,你将一直对许多姓名进行大量解密


因此,当然,如果您愿意,可以继续使用您提出的方案作为深入安全性的一部分。但请记住,这是不够的。别指望了。您仍然需要安全的web服务器、健壮的用户身份验证方案和适当的防火墙。

我最初使用的是charset=latin1,field type=varchar(255)。Latin1不支持所有欧洲语言,varchar也不支持加密字符串。我想我是在问——我是不是遗漏了什么?这些设置是否支持所有欧洲语言?加密方案是否合理?字节可以表示任何内容,因此它们可以表示所有欧洲语言字符集。他们是否这样做可能是一个如何将数据放入数据库以及如何检索数据的问题。