hash_password

hash_password is a Flutter Plugin to make your user's passwords safe and secure and at the same time easy to remember, hash_password produces a hashcode for the password that the user enters in the textfield, effectively producing a highly secure password and removing the need for remembering a complex password.

Installation

In the dependencies: section of your pubspec.yaml, add the following line:


dependencies:
  hash_password: <latest_version>

Usage

A usage example is provided below. Check the API Reference for detailed docs:

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:hash_password/hash_password.dart';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:crypto/crypto.dart';
import 'dart:convert';
import 'package:convert/convert.dart';
import 'package:fast_base58/fast_base58.dart';
import 'package:flutter/services.dart';

import 'package:hash_password/hashing_functionalities.dart';
import 'package:hash_password/password_hasher.dart';

void main() => runApp(MaterialApp(
  home: Hash_Password(),
));

class Hash_Password extends StatefulWidget {
  @override
  _Hash_PasswordState createState() => _Hash_PasswordState();
}

class _Hash_PasswordState extends State<Hash_Password> {

  TextEditingController _controller = TextEditingController();
  //Trigger for generating the hash code for the entered password
  bool password_hash_trigger = false;
  bool visible = true;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.white,
        appBar: AppBar(
          title: Text(
            'Hash Password',
            style: TextStyle(fontWeight: FontWeight.bold,fontSize: 25),
          ),
        ),

      body: Column(

        children: <Widget>[
          Password_Hasher(
            algorithm_number: '256',
            Hex: true,
            controller: _controller,
            restrict: true,
            restrict_number: 10,

            child: TextFormField(
              controller: _controller,
              decoration: InputDecoration(
                hintText: 'Enter Password Here!',
              ),
              style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold),
              onChanged: (String newValue){
                //Do something with the user input.
              },
            ),
          ),

          SizedBox(height: 15.0,),

          TextButton(
            child: Text('Submit', style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold),),
            onPressed: (){
              setState(() {
                password_hash_trigger = true;
              });
            },
          ),
        ],
      ),
    );
  }
}

Like in the example given above, to use the plugin in your flutter project, simply enclose the widget where user is going enter the password by Password_Hasher() widget,

Properties

Properties ---
algorithm_number String
Base58 bool
Base64 bool
Hex bool
restrict bool
restrict_number double
trigger bool
child TextFormField
controller TextEditingController
  • Hashing Algorithms: algorithm_number property specify the number afetr SHA for specifying an algorithm to produce hashcode for the password entered.
  • Number System: Base58, Base64, Hex are bool properties which specify the Number System for the hash code (Note: only one of these is needed to be specified as true, Hex is true by default, if multiple number systems sre set true, then it may result to unwanted outcomes)
  • Character Restriction: In case there is restriction on number of characters to be entered for the password, set restrict as true, and then, specify the number of characters allowed using restrict_number property.
  • trigger: it is a bool property which specifies when to convert entered text to its corresponding hashcode.
  • child: it is the child property of Password_Hasher() widget, it takes TextFormField, in which password is supposed to be entered.
  • controller: it takes the TextEditingController of the child TextFormField as input.

Example App

You can View the full code implementation in the example directory Example Flutter App: