认识MySQL的双向加密方式,处理显示乱码
twocode

    对于一些复杂的汉字来说,MySQL的默认支持不是很好,所以会出现显示乱码的情况,针对这种情况,需要用MySQL提供的双向加密函数进行处理,再进行原始数据的添加和查询;双向,见文知意,就是加密和解密,在添加数据的时候进行加密,查询的时候进行相应的解密,在这里个人收集了一些,共享参考。

    ENCODE()和DECODE()

    ENCODE(str, pass_str):该函数使用pass_str作为密码来加密字符串str,其加密的结果可以通过DECODE()函数来解密。该函数返回的结果是一个同str等长;

    DECODE(crypt_str, pass_str):该函数使用pass_str作为密码来解密使用ENCODE()加密后的字符串crypt_str。

    DES_ENCRYPT()和DES_ENCRYPT()

    DES_ENCRYPT(str[, {key_num|key_str}]):该函数使用三重DES算法连同给定的密钥来加密加密字符串;

    DES_DECRYPT(crypt_str[, key_str]):该函数解密一个通过DES_ENCRYPT()加密的字符串,如果出现错误,该函数返回NULL。

    COMPRESS()和UNCOMPRESS()

    COMPRESS(string_to_compress):该函数压缩一个字符串并且返回一个二进制串。该函数需要MySQL已连同一个压缩库一块编译,比如zlib,否则该函数的返回值总为NULL。压缩后的字符串可以通过UNCOMPRESS()函数来解压缩。                                                      NCOMPRESS(string_to_uncompress):该函数解压缩一个通过COMPRESS() 函数压缩的字符串。如果变量不是一个压缩值,则结果返回为NULL。

    AES_ENCRYPT()和AES_DECRYPT()

    AES_ENCRYPT()和AES_DECRYPT()可以加密/解密使用官方AES算法的数据。该算法使用128位密钥来编码,但用户可以将其扩展到256位。MySQL选用128位密钥,因为这样算法实现更快,而且对大多数用户而言它也足够安全了。

    AES_ENCRYPT(str,key_str)函数加密一个字符串并返回一个二进制串。AES_DECRYPT(crypt_str, key_str) 函数可以解密使用官方AES(Advanced Encryption Standard)算法加密的数据并返回原有字符串,输入变量可以是任意长度。如果输入变量为NULL,那么该函数返回结果也为NULL。

    因为AES是一个块级算法,需要使用补白来编码非偶数长度的字符串。   

    综合以上的处理方式来说,就是将原始数据转成计算机的语言(二进制)进行存储,而这些函数就是起到中间翻译的作用,按照函数的语法正常使用即可解决显示乱码的问题。

网友评论已关闭