微信小程序使用crypto-js

还是那个没有任何开发意义的小程序!!!这次的要求我就有点看不懂了,这是公司在日本出差的大佬写的接口,平时交流发在群里的文档全他喵是英文的,这让我连四级都没考过的怎么看的懂呢(是真的“没考过”),所以菜不是没有道理的。

在此之前大致搜索了一下xxhashjs与crypto-js的区别:

  1. 功能:

    • xxhashjs:xxhashjs是一个用于计算哈希的库,它实现了XXHash算法。XXHash是一种非加密哈希算法,用于生成数据的校验和。它通常用于快速的哈希计算,例如在数据验证、数据完整性检查等场景下。
    • crypto-js:crypto-js是一个广泛用于加密和解密操作的库。它支持多种加密算法,包括AES、DES、HMAC等,在数据保护、加密通信、密码学等领域有很多应用。
  2. 算法:

    • xxhashjs:xxhashjs实现了XXHash算法,这是一种非加密哈希算法。XXHash是一种快速的哈希算法,适用于大规模数据的哈希计算。
    • crypto-js:crypto-js实现了多种加密算法,包括对称加密算法(如AES、DES)、哈希算法(如MD5、SHA)、消息认证码算法(如HMAC)等。
  3. 应用场景:

    • xxhashjs:xxhashjs适用于需要快速计算数据哈希值的场景,例如数据校验、数据完整性检查等。
    • crypto-js:crypto-js适用于需要进行加密、解密和哈希计算的场景,例如加密通信、数据保护、密码学运算等。
  4. 库大小和性能:

    • xxhashjs:由于xxhashjs只实现了单一算法,所以它的库大小相对较小。它被设计为非常高效,能够在处理大规模数据时提供快速的哈希计算。
    • crypto-js:由于crypto-js实现了多种算法,所以它的库大小相对较大。它提供了更多的加密选项,但在某些特定场景下可能会比较慢。

综上所述,xxhashjs和crypto-js是两个不同的JavaScript库,用于不同的功能需求。使用xxhashjs可以进行快速哈希计算,而crypto-js则提供了更多的加密和哈希选项。选择使用哪个库取决于你的具体需求和使用场景。

crypto-js开始

老样子在项目所在的位置打开终端输入,如果已经安装过一起的库,就直接在命令行输入以下命令,不然就先执行npm init后再执行以下命令:

npm install crypto-js

安装完成要记得构建npm:工具–>构建npm 

crypto-js引入

const CryptoJS  = require('crypto-js')

crypto-js使用

 这里补充一下CryptoJS.SHA256、CryptoJS.SHA1、CryptoJS.MD5:

  1. CryptoJS.SHA256代表SHA-256算法,它是Secure Hash Algorithm 2(SHA-2)系列中的一种。SHA-256是一种密码学哈希函数,它将输入数据转换为固定长度(256位)的哈希值。

  2. CryptoJS.SHA1代表SHA-1算法,它是Secure Hash Algorithm 1(SHA-1)的简称。SHA-1也是一种密码学哈希函数,将输入数据转换为160位的哈希值。然而,由于SHA-1的安全性已经被证明容易受到碰撞攻击的影响,因此在一些安全敏感的场景中,建议使用更强大和安全的哈希算法,如SHA-256。

  3. CryptoJS.MD5代表MD5(Message Digest Algorithm 5),它是一种广泛使用的哈希算法。MD5将输入数据转换为128位的哈希值。然而,MD5也被发现存在严重的碰撞漏洞,因此在安全性要求较高的场景中不建议使用它。

// 在选择图片的事件处理函数中调用计算哈希值的方法
chooseImage() {
  wx.chooseMedia({
    count: 1,
    mediaType: ['image'],
    success: (res) => {
      const tempFilePath = res.tempFiles[0].tempFilePath;
      this.calculateFileHash(tempFilePath);
    }
  });
},

// 计算文件哈希值的方法
calculateFileHash(filePath) {
  wx.getFileSystemManager().readFile({
    filePath: filePath,
    success: (res) => {
      const fileData = res.data;
      const hash = CryptoJS.SHA256(CryptoJS.lib.WordArray.create(fileData));
      const hashResult = hash.toString(CryptoJS.enc.Hex);
      console.log('文件哈希值:', hashResult);
    },
    fail: (err) => {
      console.error('读取文件失败:', err);
    }
  });
}

在上面的代码中,chooseImage方法用于选择图片文件并调用calculateFileHash方法进行哈希值计算。calculateFileHash方法通过wx.getFileSystemManager().readFile函数读取选择的图片文件的二进制数据,并使用CryptoJS.SHA256函数计算哈希值,然后使用toString方法将哈希值转换为十六进制字符串形式。

请注意,上述代码使用了SHA-256算法计算哈希值,生成的结果是256位(64个字符的十六进制字符串),而不是64位哈希值。如果你需要获取64位哈希值,你可以选择更短的哈希算法,例如SHA-1或MD5。你只需要将CryptoJS.SHA256替换为CryptoJS.SHA1CryptoJS.MD5即可。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值