从服务端获取的数据,想要和本地已经存在的数据做对比,如果不一致就更细数据,如果一致,就不做任何修改,这个时候数据可能是复杂的json数据,不能一项一项对比,效率太低了,所以就想使用一种更高效的对比方式,就想到了md5唯一校验。使用的依赖库是crypto,官方地址:crypto | Dart Package
这个依赖库不止可以获取md5,还可以获取到更多:
SHA-1
SHA-224
SHA-256
SHA-384
SHA-512
SHA-512/224
SHA-512/256
MD5
HMAC (i.e. HMAC-MD5, HMAC-SHA1, HMAC-SHA256)
获取sha1使用示例:
- import 'package:crypto/crypto.dart';
- import 'dart:convert'; // for the utf8.encode method
-
- void main() {
- var bytes = utf8.encode("foobar"); // data being hashed
-
- var digest = sha1.convert(bytes);
-
- print("Digest as bytes: ${digest.bytes}");
- print("Digest as hex string: $digest");
- }
获取md5使用示例:
- import 'dart:convert';
- import 'package:crypto/crypto.dart';
-
-
- // md5 加密:将json转为字符串取md5
- String generateMd5(dynamic value) {
- var data = const JsonEncoder().convert(value);
- var content = const Utf8Encoder().convert(data);
- var digest = md5.convert(content);
- // 这里其实就是 digest.toString()
- return digest.toString();
- }
就可以通过判断两个数据的md5是否一致来判断数据是否发生了更新: