返回提交历史
Modified
docs/misc/sign/APP.md
+49
-1
XFEstudio/bilibili-API-collect
Update APP.md (#911)
添加了Swift语言的支持
faa3d97
代码差异
1 个文件
+49
-1
@@ -23,7 +23,7 @@
23
23
24
24
## Demo
25
25
26
该 Demo 提供 [Python](#Python) 和 [Java](#Java) 语言例程
26
该 Demo 提供 [Python](#Python) 和 [Java](#Java) 和 [TS/JS](#TypeScript/JavaScript) 和 [Swift](#Swift) 语言例程
27
27
28
28
使用 appkey = `1d8b6e7d45233436`, appsec = `560c52ccd288fed045859ed18bffd973` 对如下 `params` 参数进行签名
29
29
@@ -166,3 +166,51 @@ console.log(
166
166
```
167
167
168
168
输出结果为:01479cf20504d865519ac50f33ba3a7d
169
170
### Swift
171
172
```swift
173
import Foundation
174
import CommonCrypto
175
176
//Swift标准库没有MD5函数,所以我们要自己实现一个
177
func MD5(string: String) -> String {
178
let length = Int(CC_MD5_DIGEST_LENGTH)
179
var digest = [UInt8](repeating: 0, count: length)
180
181
if let d = string.data(using: .utf8) {
182
_ = d.withUnsafeBytes { body -> String in
183
CC_MD5(body.baseAddress, CC_LONG(d.count), &digest)
184
return ""
185
}
186
}
187
188
return (0..<length).reduce("") {
189
$0 + String(format: "%02x", digest[$1])
190
}
191
}
192
193
func appSign(params: [String:String],appKey:String,appSec:String) -> String {
194
var signedParams = params
195
signedParams["appkey"] = appKey
196
let sortedParams = signedParams.sorted { $0.key < $1.key }
197
//在制作成query时,需要显式addingPercentEncoding转换
198
let query = sortedParams.map { "\($0.key)=\($0.value.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!)" }.joined(separator: "&")
199
let sign = MD5(string: query+appSec)
200
return sign
201
}
202
203
204
//testSign
205
let appKey = "1d8b6e7d45233436"
206
let appSec = "560c52ccd288fed045859ed18bffd973"
207
let signResult = appSign(params: [
208
"id": "114514",
209
"str": "1919810",
210
"test": "いいよ,こいよ",
211
],appKey:appKey,appSec:appSec)
212
print(signResult)
213
```
214
215
输出结果为:01479cf20504d865519ac50f33ba3a7d
216