weapps-plugin-jingtong-verify 1.5.9 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +2 -1
  2. package/app.json +3 -11
  3. package/package.json +2 -2
  4. package/sdk.js +1 -32
  5. package/weapps-plugin-jingtong-verify/components/gsd-ui/g-form/index.js +0 -3
  6. package/weapps-plugin-jingtong-verify/components/gsd-ui/g-input/index.js +0 -5
  7. package/weapps-plugin-jingtong-verify/components/gsd-ui/g-input/index.wxml +1 -1
  8. package/weapps-plugin-jingtong-verify/components/gsd-ui/static/style/components/g-input.wxss +1 -9
  9. package/weapps-plugin-jingtong-verify/components/tip-modal/tip-modal.js +0 -8
  10. package/weapps-plugin-jingtong-verify/components/tip-modal/tip-modal.wxml +0 -2
  11. package/weapps-plugin-jingtong-verify/i18n/rules.js +5 -146
  12. package/weapps-plugin-jingtong-verify/pages/face-verify/face-verify.js +12 -276
  13. package/weapps-plugin-jingtong-verify/pages/face-verify/face-verify.wxml +1 -19
  14. package/weapps-plugin-jingtong-verify/pages/face-verify/face-verify.wxss +1 -53
  15. package/weapps-plugin-jingtong-verify/pages/nation-list/nation-list.js +12 -2
  16. package/weapps-plugin-jingtong-verify/pages/setting/setting.js +7 -10
  17. package/weapps-plugin-jingtong-verify/utils/request.js +1 -670
  18. package/weapps-plugin-jingtong-verify/utils/rules.js +1 -105
  19. package/weapps-plugin-jingtong-verify/utils/validate.js +1 -139
  20. package/weapps-plugin-jingtong-verify/components/custom-steps/custom-steps.js +0 -41
  21. package/weapps-plugin-jingtong-verify/components/custom-steps/custom-steps.json +0 -4
  22. package/weapps-plugin-jingtong-verify/components/custom-steps/custom-steps.wxml +0 -20
  23. package/weapps-plugin-jingtong-verify/components/custom-steps/custom-steps.wxss +0 -112
  24. package/weapps-plugin-jingtong-verify/components/to-other-modal/to-other-modal.js +0 -73
  25. package/weapps-plugin-jingtong-verify/components/to-other-modal/to-other-modal.json +0 -4
  26. package/weapps-plugin-jingtong-verify/components/to-other-modal/to-other-modal.wxml +0 -19
  27. package/weapps-plugin-jingtong-verify/components/to-other-modal/to-other-modal.wxss +0 -72
  28. package/weapps-plugin-jingtong-verify/images/bank-card-verify.png +0 -0
  29. package/weapps-plugin-jingtong-verify/images/chek_right.png +0 -0
  30. package/weapps-plugin-jingtong-verify/images/chevron-down.png +0 -0
  31. package/weapps-plugin-jingtong-verify/images/chevron-up.png +0 -0
  32. package/weapps-plugin-jingtong-verify/pages/bank-card-login/bank-card-login.js +0 -506
  33. package/weapps-plugin-jingtong-verify/pages/bank-card-login/bank-card-login.json +0 -8
  34. package/weapps-plugin-jingtong-verify/pages/bank-card-login/bank-card-login.wxml +0 -79
  35. package/weapps-plugin-jingtong-verify/pages/bank-card-login/bank-card-login.wxss +0 -212
  36. package/weapps-plugin-jingtong-verify/pages/bank-card-login-forgot-face-setting/bank-card-login-forgot-face-setting.js +0 -1373
  37. package/weapps-plugin-jingtong-verify/pages/bank-card-login-forgot-face-setting/bank-card-login-forgot-face-setting.json +0 -10
  38. package/weapps-plugin-jingtong-verify/pages/bank-card-login-forgot-face-setting/bank-card-login-forgot-face-setting.wxml +0 -247
  39. package/weapps-plugin-jingtong-verify/pages/bank-card-login-forgot-face-setting/bank-card-login-forgot-face-setting.wxss +0 -397
  40. package/weapps-plugin-jingtong-verify/pages/bank-card-login-forgot-sms-setting/bank-card-login-forgot-sms-setting.js +0 -66
  41. package/weapps-plugin-jingtong-verify/pages/bank-card-login-forgot-sms-setting/bank-card-login-forgot-sms-setting.wxml +0 -2
  42. package/weapps-plugin-jingtong-verify/pages/bank-card-login-pwd-setting/bank-card-login-pwd-setting.js +0 -463
  43. package/weapps-plugin-jingtong-verify/pages/bank-card-login-pwd-setting/bank-card-login-pwd-setting.json +0 -8
  44. package/weapps-plugin-jingtong-verify/pages/bank-card-login-pwd-setting/bank-card-login-pwd-setting.wxml +0 -69
  45. package/weapps-plugin-jingtong-verify/pages/bank-card-login-pwd-setting/bank-card-login-pwd-setting.wxss +0 -232
  46. package/weapps-plugin-jingtong-verify/pages/bank-card-verify/bank-card-verify.js +0 -892
  47. package/weapps-plugin-jingtong-verify/pages/bank-card-verify/bank-card-verify.json +0 -12
  48. package/weapps-plugin-jingtong-verify/pages/bank-card-verify/bank-card-verify.wxml +0 -157
  49. package/weapps-plugin-jingtong-verify/pages/bank-card-verify/bank-card-verify.wxss +0 -258
  50. package/weapps-plugin-jingtong-verify/pages/login-help/login-help.js +0 -147
  51. package/weapps-plugin-jingtong-verify/pages/login-help/login-help.json +0 -4
  52. package/weapps-plugin-jingtong-verify/pages/login-help/login-help.wxml +0 -48
  53. package/weapps-plugin-jingtong-verify/pages/login-help/login-help.wxss +0 -166
  54. package/weapps-plugin-jingtong-verify/pages/login-manage-setting/login-manage-setting.js +0 -189
  55. package/weapps-plugin-jingtong-verify/pages/login-manage-setting/login-manage-setting.json +0 -4
  56. package/weapps-plugin-jingtong-verify/pages/login-manage-setting/login-manage-setting.wxml +0 -19
  57. package/weapps-plugin-jingtong-verify/pages/login-manage-setting/login-manage-setting.wxss +0 -69
  58. package/weapps-plugin-jingtong-verify/utils/constantVal.js +0 -75
  59. package/weapps-plugin-jingtong-verify/utils/md5.js +0 -184
@@ -1,166 +0,0 @@
1
- /* weapps-plugin-jingtong-verify/pages/login-help/login-help.wxss */
2
-
3
- .login-help-container {
4
- padding: 20rpx;
5
- background-color: #f5f5f5;
6
- min-height: 100vh;
7
- }
8
- .login-help-content{
9
- padding: 40rpx;
10
- background-color: #FFFFFF;
11
- border-radius: 20rpx;
12
- }
13
- /* 页面标题样式 */
14
- .page-title {
15
- display: flex;
16
- align-items: center;
17
- margin-bottom: 50rpx;
18
- padding-bottom: 40rpx;
19
- border-bottom: 1rpx solid #E5E5E5;
20
- }
21
-
22
- .title-bar {
23
- width: 6rpx;
24
- height: 40rpx;
25
- background-color: #ff4444;
26
- margin-right: 20rpx;
27
- border-radius: 3rpx;
28
- }
29
-
30
- .title-text {
31
- font-size: 36rpx;
32
- font-weight: bold;
33
- color: #333;
34
- }
35
-
36
- /* 手风琴列表容器 */
37
- .accordion-list {
38
- display: flex;
39
- flex-direction: column;
40
- gap: 20rpx;
41
- }
42
-
43
- /* 手风琴项目 */
44
- .accordion-item {
45
- background-color: #F5F7FA;
46
- border-radius: 12rpx;
47
- overflow: hidden;
48
- box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
49
- transition: all 0.3s ease;
50
- margin-bottom: 25rpx;
51
- }
52
-
53
- .accordion-item.expanded {
54
- box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.15);
55
- }
56
-
57
- /* 手风琴头部 */
58
- .accordion-header {
59
- display: flex;
60
- align-items: center;
61
- justify-content: space-between;
62
- padding: 30rpx 25rpx;
63
- cursor: pointer;
64
- transition: background-color 0.2s ease;
65
- }
66
-
67
- .accordion-header:active {
68
- background-color: #f8f8f8;
69
- }
70
- .accordion-header-separate{
71
- height: 1rpx;
72
- background-color: #E5E5E5;
73
- margin: 0 25rpx;
74
- }
75
- .question-text {
76
- flex: 1;
77
- font-size: 34rpx;
78
- font-weight: bold;
79
- color: #333;
80
- line-height: 1.4;
81
- margin-right: 20rpx;
82
- }
83
-
84
- /* 箭头图标 */
85
- .chevron-icon {
86
- width: 44rpx;
87
- height: 44rpx;
88
- transition: transform 0.3s ease;
89
- }
90
-
91
- /* 手风琴内容区域 */
92
- .accordion-content {
93
- min-height: 0;
94
- overflow: hidden;
95
- transition: max-height 0.3s ease;
96
- background-color: #F5F7FA;
97
- }
98
-
99
- .accordion-content.show {
100
- max-height: 3000rpx; /* 放宽以容纳长内容 */
101
- }
102
-
103
- /* 答案列表 */
104
- .answer-list {
105
- padding: 0 25rpx 30rpx 25rpx;
106
- }
107
-
108
- .answer-item {
109
- display: block;
110
- font-size: 32rpx;
111
- color: #62667A;
112
- line-height: 1.6;
113
- margin-bottom: 15rpx;
114
- }
115
-
116
- .answer-item:last-child {
117
- margin-bottom: 0;
118
- }
119
-
120
- /* 动画效果 */
121
- @keyframes slideDown {
122
- from {
123
- max-height: 0;
124
- opacity: 0;
125
- }
126
- to {
127
- max-height: 2000rpx;
128
- opacity: 1;
129
- }
130
- }
131
-
132
- @keyframes slideUp {
133
- from {
134
- max-height: 2000rpx;
135
- opacity: 1;
136
- }
137
- to {
138
- max-height: 0;
139
- opacity: 0;
140
- }
141
- }
142
-
143
- .accordion-content.show {
144
- animation: slideDown 0.3s ease forwards;
145
- }
146
-
147
- .accordion-content:not(.show) {
148
- animation: slideUp 0.3s ease forwards;
149
- }
150
-
151
- /* 暂无数据样式 */
152
- .no-data {
153
- display: flex;
154
- justify-content: center;
155
- align-items: center;
156
- padding: 80rpx 40rpx;
157
- background-color: #F5F7FA;
158
- border-radius: 12rpx;
159
- margin-top: 20rpx;
160
- }
161
-
162
- .no-data-text {
163
- font-size: 28rpx;
164
- color: #999;
165
- text-align: center;
166
- }
@@ -1,189 +0,0 @@
1
- const jingtongVerifyRequest = require('../../utils/request')
2
- const { flow } = require("@wecity/weda-plugin-utils");
3
- import { SDKTrack, setAccountInfo } from '../../utils/QDTrackerNew/QDTrackerMain'
4
- Page({
5
-
6
- /**
7
- * 页面的初始数据
8
- */
9
- data: {
10
- formData: {
11
- strName: "",
12
- name: "",
13
- strCid: "",
14
- id_card_number: "",
15
- cid_type: "",
16
- verify_expire_time: ""
17
- },
18
- loginWay:'',
19
- loginTimeRange: {
20
- 24: '1天免登录',
21
- 168: '7天免登录',
22
- 720: '30天免登录'
23
- },
24
- isShowUpdatePwd: false
25
- },
26
-
27
- /**
28
- * 生命周期函数--监听页面加载
29
- */
30
- onLoad(options) {
31
- // 初始化操作,回填证件类型为身份证的身份信息
32
- this.initUserInfo()
33
- },
34
- // 初始化操作,回填证件类型为身份证的身份信息
35
- initUserInfo() {
36
- // 默认身份证号码
37
- // cidType = '111'
38
-
39
- wx.showLoading({
40
- title: '加载中…',
41
- })
42
- // 清空本地Temp数据
43
- wx.setStorageSync('tif.formDataTemp', '')
44
-
45
- jingtongVerifyRequest.getSession({
46
- success: res => {
47
- let { cid_type, cid, name, star_name, star_cid, verify_expire_time } = res
48
-
49
- // 设置用户账号信息
50
- setAccountInfo(res.openid)
51
-
52
- if (cid_type === '111' && cid && name) {
53
- let { formData, loginWay, loginTimeRange } = this.data
54
- formData.strName = star_name
55
- formData.name = name
56
- formData.strCid = star_cid
57
- formData.id_card_number = cid
58
- formData.cid_type = cid_type
59
- formData.verify_expire_time = verify_expire_time || ''
60
- loginWay = loginTimeRange[verify_expire_time] || ''
61
- // 回填身份证类型
62
- this.setData({
63
- formData: formData,
64
- loginWay: loginWay
65
- })
66
- }
67
- this.getShowUpdatePwd(cid)
68
- // if (cid_type === '516') {
69
- // this.setData({
70
- // exitHmSession: true,
71
- // HmSession: res
72
- // })
73
- // console.log('HmSession', this.data.HmSession)
74
- // } else {
75
- // this.setData({
76
- // exitHmSession: false
77
- // })
78
- // }
79
- wx.hideLoading()
80
- },
81
- fail: fail => {
82
- console.log('getSession-fail', fail)
83
- wx.hideLoading()
84
- }
85
- })
86
- },
87
- getShowUpdatePwd(value) {
88
- jingtongVerifyRequest.checkPhonePwd(value).then(res => {
89
- const { errmsg, errcode } = res
90
- if(errcode === 0){
91
- if(!res.data.is_new){
92
- this.setData({
93
- isShowUpdatePwd: true
94
- })
95
- } else {
96
- this.setData({
97
- isShowUpdatePwd: false
98
- })
99
- }
100
- } else {
101
- wx.showToast({
102
- title: errmsg,
103
- icon: 'none',
104
- duration: 2000,
105
- })
106
- }
107
- }).catch(error => {
108
- console.log('异常')
109
- console.log(error)
110
- const { errmsg } = error
111
- wx.showToast({
112
- title: errmsg,
113
- icon: 'none',
114
- duration: 2000,
115
- })
116
- })
117
- },
118
- // 跳转登录管理页面
119
- goToLoginWag() {
120
- // 上报事件
121
- SDKTrack('function_btn_click', {
122
- item_type: '8', // 业务分类
123
- item_code: '110000000000511111993403700000', // 事项ID
124
- item_access: '', // 业务入口
125
- })
126
-
127
- flow.navigateTo({
128
- url: '../../pages/login-manage/login-manage'
129
- })
130
- // flow.navigateTo({
131
- // url: '../../pages/login-manage-setting/login-manage-setting'
132
- // })
133
- },
134
- goToUpdatePwd() {
135
- console.log('忘记密码')
136
- const { name, id_card_number, strCid, cid_type, verify_expire_time } = this.data.formData
137
- wx.navigateTo({
138
- url: '/weapps-plugin-jingtong-verify/pages/bank-card-login-forgot-face-setting/bank-card-login-forgot-face-setting?name=' + name + '&idCardNumber=' + id_card_number + '&strCid=' + strCid + '&cid_type=' + cid_type + '&verify_expire_time=' + verify_expire_time,
139
- })
140
- },
141
- /**
142
- * 生命周期函数--监听页面初次渲染完成
143
- */
144
- onReady() {
145
-
146
- },
147
-
148
- /**
149
- * 生命周期函数--监听页面显示
150
- */
151
- onShow() {
152
-
153
- },
154
-
155
- /**
156
- * 生命周期函数--监听页面隐藏
157
- */
158
- onHide() {
159
-
160
- },
161
-
162
- /**
163
- * 生命周期函数--监听页面卸载
164
- */
165
- onUnload() {
166
-
167
- },
168
-
169
- /**
170
- * 页面相关事件处理函数--监听用户下拉动作
171
- */
172
- onPullDownRefresh() {
173
-
174
- },
175
-
176
- /**
177
- * 页面上拉触底事件的处理函数
178
- */
179
- onReachBottom() {
180
-
181
- },
182
-
183
- /**
184
- * 用户点击右上角分享
185
- */
186
- onShareAppMessage() {
187
-
188
- }
189
- })
@@ -1,4 +0,0 @@
1
- {
2
- "usingComponents": {},
3
- "navigationBarTitleText": "登录管理"
4
- }
@@ -1,19 +0,0 @@
1
- <view>
2
- <view class="top-box">
3
- <view class="cell">
4
- <text class="label">默认登录方式</text>
5
- <view class="content" catchtap="goToLoginWag">
6
- <text>{{ loginWay }}</text>
7
- <image src="../../images/Vector.png" mode="" class="img" wx:if="{{ loginWay }}"/>
8
- </view>
9
- </view>
10
- <view class="cell" catchtap="goToUpdatePwd" wx:if="{{isShowUpdatePwd}}">
11
- <view class="label">
12
- 修改登录密码
13
- </view>
14
- <view class="content">
15
- <image src="../../images/Vector.png" mode="" class="img"/>
16
- </view>
17
- </view>
18
- </view>
19
- </view>
@@ -1,69 +0,0 @@
1
- page {
2
- background-color: #F6F8FA;
3
- padding-bottom: 60rpx;
4
- }
5
- .top-box {
6
- margin-top: 24rpx;
7
- background: #ffffff;
8
- display: flex;
9
- align-items: center;
10
- flex-direction: column;
11
- margin-bottom: 32rpx;
12
- }
13
- .cell {
14
- display: flex;
15
- justify-content: space-between;
16
- width: 686rpx;
17
- height: 78rpx;
18
- border-bottom: 2rpx solid #EDEDED;
19
- margin-bottom: 32rpx;
20
- }
21
- .cell:first-child {
22
- margin-top: 48rpx;
23
- }
24
- .cell:last-child, .no-border{
25
- margin-bottom: 0rpx;
26
- border-bottom: 1px solid transparent;
27
- }
28
- .no-border {
29
- height: 60rpx;
30
- }
31
- .label {
32
- color: #62667a;
33
- font-size: 32rpx;
34
- }
35
- .img {
36
- width: 12rpx;
37
- height: 24rpx;
38
- margin-left: 16rpx;
39
- }
40
- .center-box {
41
- display: flex;
42
- align-items: center;
43
- flex-direction: column;
44
- background: #ffffff;
45
- margin-bottom: 80rpx;
46
- }
47
- .tips {
48
- font-size: 24rpx;
49
- color: #62667A;
50
- width: 686rpx;
51
- margin-bottom: 32rpx;
52
- }
53
- .bottom-box {
54
- width: 686rpx;
55
- height: 96rpx;
56
- margin: 0 auto;
57
- }
58
- .btn {
59
- width: 100% !important;
60
- height: 100% !important;
61
- display: flex;
62
- justify-content: center;
63
- align-items: center;
64
- border-radius: 16rpx;
65
- background: #ce0022;
66
- box-shadow: 0 24rpx 48rpx 0 rgba(206, 0, 34, 0.15);
67
- color: #ffffff;
68
- font-size: 34rpx;
69
- }
@@ -1,75 +0,0 @@
1
- /**
2
- * 此处常量为缓存key,后续用的缓存key的,可以定义在此处,便于后续管理
3
- */
4
- // 设置缓存过期时间 5分钟(秒)
5
- const five_key_time_out_key = 300
6
- // 银行卡连续核验失败次数key
7
- const bank_card_continuous_verify_error_count_key = "bank_card_continuous_verify_error_count_key"
8
- // 一小时内登录失败次数key
9
- const bank_card_login_fail_count= "bank_card_login_fail_count"
10
- // 当天内登录失败次数key
11
- const day_bank_card_login_fail_count= "day_bank_card_login_fail_count"
12
- // 首次登录失败的时间戳key
13
- const bank_card_login_fail_time= "bank_card_login_fail_time"
14
-
15
- // 其他方式登录-忘记密码-人脸识别失败次数key
16
- const bank_card_forgot_face_fail_count = "bank_card_forgot_face_fail_count"
17
- // 其他方式登录-忘记密码-人脸识别失败10分钟后重新key
18
- const bank_card_forgot_face_fail_time = "bank_card_forgot_face_fail_time"
19
-
20
- // 银行卡核验失败次数
21
- const bank_card_verify_fail_count = "bank_card_verify_fail_count"
22
- // 银行卡核验失败限制再次核验时间
23
- const bank_card_verify_fail_time = "bank_card_verify_fail_time"
24
- /**
25
- * 设置缓存(带过期时间,单位:秒)
26
- * @param {String} key 缓存键名
27
- * @param {*} value 要缓存的数据
28
- * @param {Number} expire 过期时间(单位:秒,可选)
29
- */
30
- function setStorageWithExpire(key, value, expire) {
31
- const data = {
32
- value, // 实际存储的数据
33
- expire: expire ? Date.now() + expire * 1000 : null // 到期时间戳(毫秒)
34
- }
35
- wx.setStorageSync(key, data)
36
- }
37
-
38
- /**
39
- * 获取缓存(自动判断是否过期)
40
- * @param {String} key 缓存键名
41
- * @returns {*} 返回缓存内容,若过期或不存在返回 null
42
- */
43
- function getStorageWithExpire(key) {
44
- const data = wx.getStorageSync(key)
45
- if (!data) return null
46
-
47
- if (data.expire && Date.now() > data.expire) {
48
- // 已过期,清除缓存
49
- wx.removeStorageSync(key)
50
- return null
51
- }
52
- return data.value
53
- }
54
- /**
55
- * 删除缓存
56
- * @param {String} key 缓存键名
57
- */
58
- function removeStorage(key) {
59
- wx.removeStorageSync(key)
60
- }
61
-
62
- module.exports = {
63
- setStorageWithExpire,
64
- getStorageWithExpire,
65
- five_key_time_out_key,
66
- removeStorage,
67
- bank_card_continuous_verify_error_count_key,
68
- bank_card_login_fail_count,
69
- day_bank_card_login_fail_count,
70
- bank_card_login_fail_time,
71
- bank_card_forgot_face_fail_count,
72
- bank_card_forgot_face_fail_time,
73
- bank_card_verify_fail_count,
74
- bank_card_verify_fail_time,
75
- }
@@ -1,184 +0,0 @@
1
- /*!
2
- * Minimal MD5 implementation (suitable as drop-in md5.min.js)
3
- * Compatible usage: const md5 = require('./utils/md5.js');
4
- * Returns lowercase hex string.
5
- * License: Public domain / MIT-like (small utility implementation)
6
- */
7
-
8
- function safeAdd(x, y) {
9
- var lsw = (x & 0xffff) + (y & 0xffff);
10
- var msw = (x >>> 16) + (y >>> 16) + (lsw >>> 16);
11
- return (msw << 16) | (lsw & 0xffff);
12
- }
13
-
14
- function bitRotateLeft(num, cnt) {
15
- return (num << cnt) | (num >>> (32 - cnt));
16
- }
17
-
18
- function md5cmn(q, a, b, x, s, t) {
19
- return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
20
- }
21
- function md5ff(a, b, c, d, x, s, t) {
22
- return md5cmn((b & c) | (~b & d), a, b, x, s, t);
23
- }
24
- function md5gg(a, b, c, d, x, s, t) {
25
- return md5cmn((b & d) | (c & ~d), a, b, x, s, t);
26
- }
27
- function md5hh(a, b, c, d, x, s, t) {
28
- return md5cmn(b ^ c ^ d, a, b, x, s, t);
29
- }
30
- function md5ii(a, b, c, d, x, s, t) {
31
- return md5cmn(c ^ (b | ~d), a, b, x, s, t);
32
- }
33
-
34
- function binlMD5(x, len) {
35
- /* append padding */
36
- x[len >> 5] |= 0x80 << (len % 32);
37
- x[(((len + 64) >>> 9) << 4) + 14] = len;
38
-
39
- var i;
40
- var olda;
41
- var oldb;
42
- var oldc;
43
- var oldd;
44
- var a = 1732584193;
45
- var b = -271733879;
46
- var c = -1732584194;
47
- var d = 271733878;
48
-
49
- for (i = 0; i < x.length; i += 16) {
50
- olda = a;
51
- oldb = b;
52
- oldc = c;
53
- oldd = d;
54
-
55
- a = md5ff(a, b, c, d, x[i], 7, -680876936);
56
- d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
57
- c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
58
- b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
59
- a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
60
- d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
61
- c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
62
- b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
63
- a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
64
- d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
65
- c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
66
- b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
67
- a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
68
- d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
69
- c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
70
- b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
71
-
72
- a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
73
- d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
74
- c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
75
- b = md5gg(b, c, d, a, x[i], 20, -373897302);
76
- a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
77
- d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
78
- c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
79
- b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
80
- a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
81
- d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
82
- c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
83
- b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
84
- a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
85
- d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
86
- c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
87
- b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
88
-
89
- a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
90
- d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
91
- c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
92
- b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
93
- a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
94
- d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
95
- c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
96
- b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
97
- a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
98
- d = md5hh(d, a, b, c, x[i], 11, -358537222);
99
- c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
100
- b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
101
- a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
102
- d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
103
- c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
104
- b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
105
-
106
- a = md5ii(a, b, c, d, x[i], 6, -198630844);
107
- d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
108
- c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
109
- b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
110
- a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
111
- d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
112
- c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
113
- b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
114
- a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
115
- d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
116
- c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
117
- b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
118
- a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
119
- d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
120
- c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
121
- b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
122
-
123
- a = safeAdd(a, olda);
124
- b = safeAdd(b, oldb);
125
- c = safeAdd(c, oldc);
126
- d = safeAdd(d, oldd);
127
- }
128
- return [a, b, c, d];
129
- }
130
-
131
- function binl2hex(binarray) {
132
- var hexTab = '0123456789abcdef';
133
- var str = '';
134
- for (var i = 0; i < binarray.length * 4; i++) {
135
- var byte = (binarray[i >> 2] >> ((i % 4) * 8)) & 0xff;
136
- str += hexTab.charAt((byte >>> 4) & 0x0f) + hexTab.charAt(byte & 0x0f);
137
- }
138
- return str;
139
- }
140
-
141
- function str2binl(str) {
142
- var bin = [];
143
- var mask = (1 << 8) - 1;
144
- for (var i = 0; i < str.length * 8; i += 8) {
145
- bin[i >> 5] |= (str.charCodeAt(i / 8) & mask) << (i % 32);
146
- }
147
- return bin;
148
- }
149
-
150
- /* UTF-8 encode */
151
- function utf8Encode(str) {
152
- str = str.replace(/\r\n/g, '\n');
153
- var utftext = '';
154
- for (var n = 0; n < str.length; n++) {
155
- var c = str.charCodeAt(n);
156
- if (c < 128) {
157
- utftext += String.fromCharCode(c);
158
- } else if (c < 2048) {
159
- utftext += String.fromCharCode((c >> 6) | 192);
160
- utftext += String.fromCharCode((c & 63) | 128);
161
- } else {
162
- utftext += String.fromCharCode((c >> 12) | 224);
163
- utftext += String.fromCharCode(((c >> 6) & 63) | 128);
164
- utftext += String.fromCharCode((c & 63) | 128);
165
- }
166
- }
167
- return utftext;
168
- }
169
-
170
- /* Main MD5 function: input string -> hex digest */
171
- function md5(input) {
172
- if (input === null || input === undefined) input = '';
173
- // Ensure string and UTF-8 encode
174
- var s = String(input);
175
- var utf8 = utf8Encode(s);
176
- var x = str2binl(utf8);
177
- var hash = binlMD5(x, utf8.length * 8);
178
- return binl2hex(hash);
179
- }
180
-
181
- /* Export for CommonJS (miniprogram) */
182
- if (typeof module !== 'undefined' && module.exports) {
183
- module.exports = md5;
184
- }