Flutte面向IoT物联网应用的密码学协议框架插件strobe的使用

Flutte面向IoT物联网应用的密码学协议框架插件strobe的使用

Strobe

这个仓库包含了一个名为Strobe协议框架的实现。你可以通过这篇博客文章来了解该框架的具体内容。

Codecov License GitHub contributors Github Repo Stars GitHub Sponsors

使用方法

示例代码

以下是如何在Flutter项目中使用strobe插件的示例:

import 'dart:convert';
import 'dart:typed_data';
import 'package:convert/convert.dart';
import 'package:strobe/strobe.dart';

void main() {
  // 初始化Strobe实例,指定自定义名称和安全级别
  final Strobe s = Strobe.initStrobe('custom_hash', Security.bit128);

  // 准备消息
  final Uint8List message =
      utf8.encode('Hello, Drop a star if you like this repo!');
  
  // 添加数据到Strobe状态
  s.aD(false, message); // meta = false

  // 输出长度为16字节的伪随机函数结果
  print(hex.encode(s.prf(16)));
}

完整的Demo

下面是一个更完整的示例,展示了如何在Flutter应用中集成并使用strobe插件进行简单的加密操作:

import 'package:flutter/material.dart';
import 'dart:convert';
import 'dart:typed_data';
import 'package:convert/convert.dart';
import 'package:strobe/strobe.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Strobe Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _output = '';

  void _generateOutput() {
    final Strobe s = Strobe.initStrobe('flutter_strobe_example', Security.bit128);
    
    final Uint8List message = utf8.encode('Hello, Flutter!');
    s.aD(false, message); // meta = false
    
    setState(() {
      _output = hex.encode(s.prf(16));
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Strobe Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Generated Output:'),
            Text(
              '$_output',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _generateOutput,
        tooltip: 'Generate',
        child: Icon(Icons.refresh),
      ),
    );
  }
}

回到顶部