mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-04-28 06:15:51 +08:00
fix & opt appsign (#1761)
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -10,15 +10,41 @@ abstract class AppSign {
|
||||
String appsec = Constants.appSec,
|
||||
}) {
|
||||
params['appkey'] = appkey;
|
||||
var searchParams = Uri(
|
||||
queryParameters: params.map(
|
||||
(key, value) => MapEntry(key, value.toString()),
|
||||
),
|
||||
).query;
|
||||
var sortedQueryString = (searchParams.split('&')..sort()).join('&');
|
||||
|
||||
final sorted = Map.fromEntries(
|
||||
params.entries.toList()..sort((a, b) => a.key.compareTo(b.key)),
|
||||
);
|
||||
params['sign'] = md5
|
||||
.convert(utf8.encode(sortedQueryString + appsec))
|
||||
.convert(utf8.encode(_makeQueryFromParametersDefault(sorted) + appsec))
|
||||
.toString(); // 获取MD5哈希值
|
||||
}
|
||||
|
||||
/// from [Uri]
|
||||
static String _makeQueryFromParametersDefault(
|
||||
Map<String, dynamic /*String?|Iterable<String>*/> queryParameters,
|
||||
) {
|
||||
var result = StringBuffer();
|
||||
var separator = '';
|
||||
|
||||
void writeParameter(String key, String? value) {
|
||||
result.write(separator);
|
||||
separator = '&';
|
||||
result.write(Uri.encodeQueryComponent(key));
|
||||
if (value != null && value.isNotEmpty) {
|
||||
result
|
||||
..write('=')
|
||||
..write(Uri.encodeQueryComponent(value));
|
||||
}
|
||||
}
|
||||
|
||||
queryParameters.forEach((key, value) {
|
||||
if (value case Iterable<String> values) {
|
||||
for (final String value in values) {
|
||||
writeParameter(key, value);
|
||||
}
|
||||
} else {
|
||||
writeParameter(key, value?.toString());
|
||||
}
|
||||
});
|
||||
return result.toString();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user