-
Notifications
You must be signed in to change notification settings - Fork 2
/
cryptography.py
10 lines (8 loc) · 3.17 KB
/
cryptography.py
1
2
3
4
5
6
7
8
9
10
from hashlib import scrypt
from binascii import hexlify
# random seed
randombin = b'^t\x1c\xe8\xa7_\xf3\xf5\xc7W\xd8\xc8\x1e\xa6\x9f8n\xeb\x11I,\x83n\x94<O\x85R\x81}Xw\x9c\xebVX\xe0D\xfb\xc4R{\xf5\xe9\xdfAg\xa4\x17\xc0\xc6Y\x0b\xd6s\x01\xd1\xd8T\x9d\x07\xe30\x1a\\PDr]\xc0\xd3\x91\xb1\xe7E\xabg7\xd1h9\x06\xf1\x06\x19\xb8\x88\x99\xe2}\x0bJ\xb6i\xf9\xf6<\x01\x94\xff.\x83RG@\xa2\xe7O\x13s\xe3A\xc3\x1ax\xc0\x11\x9aI\xf5$\xb5\xbbh\xd5n\x94\xad~\x88\xd0|/Q^i\xc2\xa4\xc5\x83)\xa7l\n\xea?\x04\xb1\xc4\xbfn\x8b|\x1b\xd0\xed\xfc\xc3\x9e\xda\x84\xca\x93\xef\xb3\x04mi\xeaG\x15\xbdNaHd@\xed\xe2\xb8\xa5\xc9Iv\x12\xc1\x9e\x86\xea\x0b\xfb\xa3\x1c:{K\xb4\xc4\x04\x87\x05 e\xc7\xb0\xf1\x80\x1b;\x832\x8f\x9bD\x97Xj\x8e\xb9\xea\xc2e\xc4\xfdSt@)z\x14\x90l\x94?\x1cq\xcdT\'R\x9dfD\xfd\xf3\xe8\x8f\xef\x99\x19\xf6\x0b\xb8`o\x999A\xef\xae\xc3~+\x9a\x01)\'P;\xc7\xda\xd3\xf2\x16\x18\xe8\x87\x03\xa3\x93\xe4x"\xc0\x83^\xaf\x00\xe57\x85Idp!\xc0Y$6\xa8r\xf8,\xe3\xe4\x8d-\xdd_\xb1\xec\xfc\x0c\xd0*a\xa8\xb8\x0ew\xf8\xce6D\x90\xdc_\x99\xa3\x15\xa5I\x9c@\x94\x99c\'~\x07yz\x15\'o\xe7\xc1$7\xde>\xb0k\t\x8808\xcc\xf95\x80\xa1\xdbw\x18\xa3\x95\xbd\xa7$\xea\xf8\x02\xd6\xecG\xd1)\x9c\xad7\x98u\x90(\x96\xba\xf4\xca\xbc b\t\xa4\x9fm"q\xe4\xae/\xfb\xbd\xa0\xd0\x90\xea\xa5n\xc6\xa8Y\xe9!\x96<=R\xa0&\r\xf3\xd5\x12\x19\xaa\xf4\x90\xf2\xd2F\x965\xe3\xeb\x8e\xe5|_8}e:t\xde=\x9e\x9a\x85\x862\xf3\xde0\x03\xd1v#U\xf0\x8e(\xf8\xb1W\xabsu\xb0\xde\xa9{\xe6>\xf4:\x07a\xd7\x89,\xc2\xf7\xbao\xc6\x96\x80\xae\xae\x9d\xb1\x1b3\xcb\xd4\x90\x17v \xbd\x85z\x91\xb2~8&U\xe2\x1b\xd5nG\x15\xf8\xee\xda:X\x9e\xa2F.\x8788k\x1a\xa1e\xd3l7\xef\xfd\xb6\x9f\x16Q\x12\x03\x18\xeb\x0e\xdb.\x87+\xce{\xdb\xdd\x1f\x97\xb3\x9bO5\x0eq\x7f\x00[\xe0\xd6\xe5\xb9t\x0c\x85sn0+=\x12\x97\xa5W\x82j\x1ca\x81%`\xd6\x85\x0c\xffV\x8d\x8b=\x18S;o\x06r|[{\x8e:\xd2\x9f\xc2Y]\xf0\x81~w\xfd6\xf8\x1a\xc8M\x11\x04\x8c\x95\xf4oRFwF\xea\xf9@\xbe\xe7tN\xa5\xac\xb3\xad\xce\xcd\xe4L\xd7\xc6\xa3\xcc\xca\xef\x0c\xad\x08@\x84Fd[PM\x00\x0c\xc2\xefI\x81X3Lc\xa1cJ$\xa5{\x86\xd9\xa6\xd3\xa8\x7fjJ\xcb\x9e*7l\x82\xf2%\x04\xf1\x97GZ\xae\xd0(\xf8F\xcf\xcae\xab\xff\x04\xeaV\xe3sJ\xfdFi\x9a\n\r\x1c\xbb\x86_F\xcb\xca\xd0\xae\xbdj-P\x99\x9f\x9bQJ\xa8"8^\xe9\x81\xe5V\x7f\x84,\xd6\x0f\x92\x85/\xdb\x13\x0b\xc9EiA\xb2\xe9\x86\xc0ge\x89T\xdc\xf2OH\x98\xac\xf9\\\xfc\xfe\xbf\xa8\x0c\xb2\xe8H\x94\xdeeM{\xb6-h\xf8\xba\x07\xfe#\x92\x86[?OtJ\xd6-\x92\xe3\x87\xa7KF\xbc\xa3\x88\xafO\xc7\xb2\xfa@\xfe\xe8\x0b\xfcXt\x16V\xef\x8fO.\x81\xb6\xf1\xc0\x87\x06h\x89/\x18\x1c\x81"\xbf\x1aA\xb3\x02\x07\xa3\x13\x8e\xe82\x10I\x04\x81\xcc\xcb \x15\x9acX\xc4\xa5Y\x81\xb7\xcbX\x98\x98F4\xaf\xf2\xe6\xad\xe1\xbcEe\xb4\x1cy\x1c\xee\xf7>\x86\xb7\xaf\xb2p\xe9\r\x8c\xb5\xc9\x0bj\xf4\x94~\xd7\x80=\x12V\xde\xb8\xfd\x85\xf6j\xbe\x11\x884\xcf\x96\x94\x01t \xd6\x15 \x18\xf5ld\x02C\xba} \xab\x96z\xa6\xcd\x1d\xf2\xb2hm\xdfTBiL\x82\x7f\xdaR\x14\xef\x01\x05\xac\xcd\x81\xed\x1b\xb9\x13\xcd\x97\xf1%W\x04\xa5o\x7f\x13\x92\xe9\xd3\x7f\x9db\x8a\x18\xfa6\x0f\x02\xdc\xec\x9d\xf1{7\x88\xa6\xf9\x072\xdby\xbe\xdeGAQ\xc3\xb8\xdfz\xb3\x84`\xac \xf0'
# is uid really a bytes object?
def encrypt_user(uid:bytes,pincode:int) -> str:
# tweak values with care
return hexlify(scrypt(password=f"{pincode}{uid}".encode(), salt=randombin,n=32768,r=8,p=1,maxmem=64_000_000))