xiaotutu6000
xiaotutu6000
  • 发布:2021-03-26 21:33
  • 更新:2022-06-03 15:26
  • 阅读:884

【报Bug】Crypto.util.bytesToBase64 在uni-app平台下转码与H5平台下转码不一致。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10

HBuilderX类型: 正式

HBuilderX版本号: 3.1.4

手机系统: Android

手机系统版本号: Android 11

手机厂商: 华为

手机机型: P30

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

var policyText = {
"expiration": "2021-03-26T17:00:00.000Z", //设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了
"conditions": [
["content-length-range", 0, 1048576000] // 设置上传文件的大小限制
]
};

var policyBase64 = Base64.encode(JSON.stringify(policyText))
message = policyBase64
var bytes = Crypto.HMAC(Crypto.SHA1, message, accesskey, { asBytes: true }) ;
console.log('xxxxxxxxx1>>' + bytes );
var signature = Crypto.util.bytesToBase64(bytes);
console.log('xxxxxxxxx2>>' + signature );

操作步骤:

1

预期结果:

1

实际结果:

1

bug描述:

同一的crypto.js文件下:
75,145,69,58,113,73,134,250,144,4,238,196,168,129,24,138,79,232,218,29

使用 Crypto.util.bytesToBase64(bytes); 转上面一串码。在uni-app平台下,会得出
S8KRRTpxScKGw7rCkATDrsOEwqjCgRjCik/DqMOaHQ==
在H5 浏览器平台上会得出:
S5FFOnFJhvqQBO7EqIEYik/o2h0=

2021-03-26 21:33 负责人:无 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

仅安卓这样吗?ios 是否正常?

  • xiaotutu6000 (作者)

    IOS还没有测试。我没有机器,这边你们可以看下,加密这块,同算法结果不一致,挺尴尬的。

    2021-03-31 22:34

乱雨飘香

乱雨飘香

我也遇到这个问题了 有处理办法没?

  • xiaotutu6000 (作者)

    前端,没有办法解决;官方貌似也不重视这个问题。我是通过后台做了转换返回的。然后避规了这个问题。

    2021-08-01 21:35

l***@163.com

l***@163.com

试了下官方提供了个API,这个在安卓和ios平台算出来是统一的
https://uniapp.dcloud.io/api/arrayBufferToBase64.html#arraybuffertobase64

该问题目前已经被锁定, 无法添加新回复