password change (reencryption)

This commit is contained in:
azivner
2017-09-09 13:53:58 -04:00
parent 42c21afa62
commit b83f090486
9 changed files with 115 additions and 29 deletions

0
src/__init__.py Normal file
View File

View File

@@ -2,7 +2,6 @@ import os
import binascii
import scrypt
import configparser
from flask import Flask, request, send_from_directory
from flask import render_template, redirect
from flask_cors import CORS
@@ -13,9 +12,9 @@ from sql import connect
from tree_api import tree_api
from notes_move_api import notes_move_api
from password_api import password_api
import config_provider
config = configparser.ConfigParser()
config.read('config.ini')
config = config_provider.getConfig()
app = Flask(__name__)
app.secret_key = config['Security']['flaskSecretKey']
@@ -54,7 +53,7 @@ documentPath = config['Document']['documentPath']
connect(documentPath)
hashedPassword = config['Login']['password-hash'].encode('utf-8')
hashedPassword = config['Login']['passwordHash'].encode('utf-8')
def verify_password(hex_hashed_password, guessed_password):

7
src/config_provider.py Normal file
View File

@@ -0,0 +1,7 @@
import configparser
def getConfig():
config = configparser.ConfigParser()
config.read('config.ini')
return config

21
src/my_scrypt.py Normal file
View File

@@ -0,0 +1,21 @@
import scrypt # pip install scrypt
def getVerificationHash(password):
salt = "dc73b57736511340f132e4b5521d178afa6311c45e0c25e6a9339038507852a6"
return getScryptHash(password, salt)
def getEncryptionHash(password):
salt = "2503bfc386bc028772f803887eaaf4d4a5c1019036873e4ba5de79a4efb7e8d8"
return getScryptHash(password, salt)
def getScryptHash(password, salt):
hashed = scrypt.hash(password=password,
salt=salt,
N=16384,
r=8,
p=1,
buflen=32)
return hashed

View File

@@ -1,8 +1,8 @@
from flask import Blueprint, jsonify, request
from flask_login import login_required
import hashlib
import configparser
import binascii
import config_provider
password_api = Blueprint('password_api', __name__)
@@ -11,16 +11,12 @@ password_api = Blueprint('password_api', __name__)
def verifyPassword():
req = request.get_json(force=True)
config = configparser.ConfigParser()
config.read('config.ini')
config = config_provider.getConfig()
hashedPassword = config['Login']['password-hash'].encode('utf-8')
hashedPassword = config['Login']['passwordHash'].encode('utf-8')
hashedPasswordBytes = binascii.unhexlify(hashedPassword)
hashedPasswordSha = hashlib.sha256(hashedPasswordBytes).hexdigest()
print(req['password'])
print(hashedPasswordSha)
isValid = req['password'] == hashedPasswordSha
return jsonify({

View File

@@ -1,6 +1,8 @@
import base64
import sqlite3
conn = None
def dict_factory(cursor, row):
d = {}
for idx, col in enumerate(cursor.description):