收藏
回答

微信小程序 如何把使用MD5加密emjoy字符串,比如'Stefan👣'

最近在获取到微信的昵称后,需要使用MD5加密传给后台,但是发现小程序直接使用可以加密中英文的md5.js来加密还有emjoy字符串的昵称,与服务器的加密不一致。有想法把emjoy字符串转成base64,但是发现没有emjoy字符串base64转换的js,所以想咨询一下,emjoy字符串在小程序中,改如果进行MD5加密或者改怎么转换成base64

最后一次编辑于  2018-09-12  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

11 个回答

  • 呦呦鹿鸣
    呦呦鹿鸣
    02-27

    js端对昵称 encodeURI 加密,后端进行解密,测试可行

    02-27
    赞同 11
    回复
  • 🚗🚕🚙🚌🚎🚒🚐🚚
    🚗🚕🚙🚌🚎🚒🚐🚚
    2018-09-12

    还挺好看

    2018-09-12
    赞同
    回复 2
    • Tiger Nong
      Tiger Nong
      2018-09-12

      你有处理过这种情况的吗??

      2018-09-12
      赞同
      回复
    • 🚗🚕🚙🚌🚎🚒🚐🚚
      🚗🚕🚙🚌🚎🚒🚐🚚
      2018-09-12回复Tiger Nong

      前端没遇到过,倒是后端数据库无法存储表情的情况,编码问题

      2018-09-12
      赞同
      回复
  • ekko
    ekko
    2018-09-12

    md5加密不是不可逆的吗?还可以反转?emjoy表情可以直接存进数据库  utf8mb4

    2018-09-12
    赞同
    回复 1
    • Tiger Nong
      Tiger Nong
      2018-09-12

      我们只是拿来做签名,不会去对它进行所谓的“解密”

      2018-09-12
      赞同
      回复
  • Tiger Nong
    Tiger Nong
    2018-09-12

    各位已经解决了,需要把昵称整个转换成unicode,然后在进行MD5加密就可以了!使用的js如下:

    module.exports = function (emoji) {

    var backStr = ""

    if (emoji && emoji.length > 0) {

    for (var char of emoji) {

    var index = char.codePointAt(0)

    if (index > 65535) {//转换emjoy字符串的

    var h = '\\u' + (Math.floor((index - 0x10000) / 0x400) + 0xD800).toString(16);

    var c = '\\u' + ((index - 0x10000) % 0x400 + 0xDC00).toString(16)

    backStr = backStr + h + c

    } else {

    var ss = '\\u00' + index.toString(16)

    backStr = backStr + ss

    }

    }

    }

    return backStr

    }


    2018-09-12
    赞同
    回复 2
    • 孙博
      孙博
      2018-10-26

      兄弟  你的md5.js是微信官方的还是网上下载的

      2018-10-26
      赞同
      回复
    • Tiger Nong
      Tiger Nong
      2018-11-01

      在网上找的,找了一个即支持中文也支持中文的

      2018-11-01
      赞同
      回复
  • 尹joy
    尹joy
    2018-11-19

    老哥,我用的你的方法,中文+emoji混合解析出来的串再显示的中文部分会是乱码,英文+emoji就不会,难道是只针对emoji解析的?

    2018-11-19
    赞同
    回复 1
    • Tiger Nong
      Tiger Nong
      2018-11-19

      我这里是针对真个的字符串,是把正常的字符转成unicode字符。如果需要把unicode字符,再转成正常的字符,你可以试一下把“\”替换成功“%”,然后再转!我这边因为不需要把unicode字符转成正常的字符。

      2018-11-19
      赞同
      回复