PHC
spec
In order to understand hex and type parameters read HASH
Argon2
spec
Description: Password hashing winner of PHC.
Outputs: Variable
Uses: Highest resistance against GPU cracking attacks, safest against side-channel attacks.
How to ???
Copy import requests
import json
import os,binascii
def sending(message):
url = 'http://127.0.0.1:6613/'
response=requests.post(url, data=message)
print response.content
return response.content
def argon(data_js):
req=json.loads(data_js)
print "Hash passwd \n " + json.dumps(req) +"\n"
data_js_n=sending(json.dumps(req))
answ=json.loads(data_js_n)
print "Recived Argon2 hash: \n" + (json.dumps(answ)) +"\n\n\n"
verify= '{ "version": 1 , "algorithm":"ARGON2" ,"family":"argon2i","plaintext": "Hello world!","hex":0,"pwd":"", "operation":"verify"}';
req=json.loads(verify)
req["pwd"]=answ["hash"]
print "Verify passwd \n " + json.dumps(req) +"\n"
data_js_n=sending(json.dumps(req))
answ_1=json.loads(data_js_n)
print "Recived Argon verification: \n" + (json.dumps(answ_1)) +"\n\n\n"
argon2_js='{ "version": 1 , "algorithm":"ARGON2" ,"family":"argon2i","plaintext": "Hello world!","t_cost":10,"m_cost":16,"parallelism":4,\
"salt":"ABABABABABABABABABABABABABABABAB","hashlen":32, "hex":0, "operation":"hash"}'
argon(argon2_js)
In this example We generate hash and validate password with argon2i from string Hello world! with t_cost, m_cost, parallelism and salt parameters given.
In order to understand t_cost, m_cost, parallelism and salt parameters, please read spec .
On argon2_js["family"] can be one of {argon2i, argon2d, argon2id}
On argon2_js["operation"] can be {hash, verify}
ARGON2 only supports "type":"string"
Json to hash
Copy { "version": 1 , "algorithm":"ARGON2" ,"family":"argon2 flavor",
"plaintext": "your password","t_cost":INT,"m_cost":INT,"parallelism":INT,
"salt":"hex string","hashlen":INT, "hex": BOOL, "operation":"hash"}
Json to verify
Copy { "version": 1 , "algorithm":"ARGON2" ,"family":"argon2 flavor",
"plaintext": "your password","hex":BOOL,"pwd":"Hex (hash arong2 string) ",
"operation":"verify"}
In this tutorial We are protecting user's credentials with TLS and Argon2. It means the information is protected in motion, at rest, in use. End to end user credentials protection