收藏
评论

小程序中如何使用Crypto进行加解密

该插件完全前端化,无任何服务器端调用,请放心使用。如果不放心可用fiddler截取插件包查看相关源码。


  1. 登录微信公众平台 https://mp.weixin.qq.com,输入小程序账号密码。



  2. 点击设置,打开第三方服务,点击添加插件。


  3. 搜索 Crypto 或者 wxf25d506ff81e19fb




  4. 搜索结果出来后选中 Crypto ,点击添加。



  5. 配置小程序app.json

  6. 加入

    "plugins":{

        "crypto":{

            "version":"0.0.003",

            "provider":"wxf25d506ff81e19fb"

        }

    }

    注: version填0.0.002也可使用,0.0.002没有 PBKDF2 加密方式及 RSA 非对称加解密方式


  7. 在小程序代码中声明引用       

    const crypto = requirePlugin("crypto");


  8. 使用MD5加密

  9. new crypto["MD5"]("布包云").toString();


  10. 使用AES 进行加解密

  11. const mi = new crypto.AES().encrypt('布包云'"BubaoCloud", {

    iv: 8,

    mode: crypto.Mode.CBC,

    padding: crypto.Padding.Pkcs7

    });

    console.log('encrypt:', mi.toString());


    const v = new crypto.AES().decrypt(mi.toString(), "BubaoCloud", {

    iv: 8,

    mode: crypto.Mode.CBC,

    padding: crypto.Padding.Pkcs7

    });

    console.log('decrypt:', v.toString(crypto.Utf8));


最后一次编辑于  2018-11-07
赞 4
收藏

18 个评论

  • One
    One
    2018-06-28

    针对 @Harlan 的疑虑做出文章前的声明

    2018-06-28
    赞同 3
    回复 5
    • 孙博
      孙博
      2018-10-26

      new crypto[cryptoItem]("布包云").toString();    cryptoItem是什么

      2018-10-26
      回复
    • 孙博
      孙博
      2018-10-26

      我看这个插件的文档 没有写md5怎么加密啊

      2018-10-26
      回复
    • One
      One
      2018-10-26回复孙博

      new crypto["MD5"]("布包云").toString();

      new crypto.MD5("布包云").toString();

      2018-10-26
      回复
    • 孙博
      孙博
      2018-10-26回复One

      谢谢

      2018-10-26
      回复
    • Old bow       ༼
      Old bow ༼
      10-30回复One
      pkcs7 换成zeroPadding还能用吗?
      10-30
      回复
  • -
    -
    01-21

    大神 ,这个插件 RSA 机密怎么设置 publickey 呢

    1. 直接使用 crypto.Keypair({ bits: 1024 }); 生成的密钥对,插件可以正常加解密,但是用在线加解密工具验证就报错。

    2. encrypt.setPublicKey(RSA_PUBLIC);设置自己的1024位的 publickey 报错:Message too long for RSA,但是在线加解密工具可以正常使用。

    3. 在线工具:https://www.bejson.com/enc/rsa/


    01-21
    赞同 1
    回复 1
    • Mr Chen
      Mr Chen
      04-02

      大哥你这个怎么解决的?

      04-02
      回复
  • 诗无
    诗无
    2018-11-26

    AES128/CFB128/NOPACK 这样的该如何写?


    var mi = new crypto.AES().encrypt(text, XMD5Keys, {iv: EMD5iv,mode: crypto.Mode.CFB,padding: crypto.Padding.NoPadding});


    是这样子吗?


    2018-11-26
    赞同 1
    回复
  • 社会主义知青
    社会主义知青
    2018-08-17

    可以RSA加解密吗

    2018-08-17
    赞同 1
    回复 2
    • One
      One
      2018-08-27

      暂时不行哦

      2018-08-27
      回复
    • One
      One
      2018-09-03回复One

      需要RSA的可以跟帖,统计一下。

      因为RSA加解密耗费资源太高,只能用worker实现,但是小程序插件目前不能用worker。


      2018-09-03
      1
      回复
  • 红萝卜炒鸡蛋
    红萝卜炒鸡蛋
    11-15

    云函数中能不能调用crypto呢?


    11-15
    赞同
    回复
  • 东寅
    东寅
    10-15

    我需要用

    enc-base64

    还有

    hmac-sha1

    应该怎么写

    js中类似

    Base64.stringify(hmacSHA1(`x-date: ${date}`, key))



    10-15
    赞同
    回复
  • panky
    panky
    08-29

    iv:8是什么意思

    08-29
    赞同
    回复
  • 斯杰
    斯杰
    07-25

    我使用AES解密


    执行到最后   v.toString(crypto.Utf8)  的时候报这个错



    断点调试看了下,是decodeURIComponent(escape(a.stringify(t))这里,解析出的字符串含%,


    导致decodeURIComponent报错了


    我的参数是


    s是session_key


    代码如第一张图,想求教下是不是哪里写的不对

    07-25
    赞同
    回复
  • alin
    alin
    05-05

    [non-writable] modification of global variable "Page" is not allowed when using plugins at app.json. 求解答

    05-05
    赞同
    回复
  • sxpdy8571
    sxpdy8571
    04-03

    楼主,这个东西加密的密文有两种,一种是密文每次都一样,一种是密文每次不一样,一样的密文用的 base64,不一样的密文用的是啥?

    04-03
    赞同
    回复

正在加载...