Surplus_Up (2DU) преди 7 години
родител
ревизия
9e82eba3cd
променени са 3 файла, в които са добавени 27 реда и са изтрити 19 реда
  1. 8 9
      app.py
  2. 17 9
      func.py
  3. 2 1
      requirements.txt

+ 8 - 9
app.py

@@ -12,11 +12,10 @@ import shutil
 import threading
 import logging
 import random
-import sys
 
 from func import *
 
-r_ver = 'v3.0.8-master-05'
+r_ver = 'v3.0.8-master-06'
 c_ver = ''.join(re.findall('[0-9]', r_ver))
 
 print('version : ' + r_ver)
@@ -251,7 +250,7 @@ else:
     
     print('language : ' + str(rep_language))
 
-ask_this = [[['markup', 'markup'], ['namumark']], [['encryption method', 'encode'], ['sha256', 'bcrypt']]]
+ask_this = [[['markup', 'markup'], ['namumark']], [['encryption method', 'encode'], ['sha256', 'sha3', 'bcrypt']]]
 for ask_data in ask_this:
     curs.execute('select data from other where name = ?', [ask_data[0][1]])
     rep_data = curs.fetchall()
@@ -592,12 +591,12 @@ def setting(num = 0):
                 div3 += '<option value="stable">stable</option>'
                 
             div5 =''
-            if d_list[15] == 'sha256':
-                div5 += '<option value="sha256">sha256</option>'
-                div5 += '<option value="bcrypt">bcrypt</option>'
-            else:
-                div5 += '<option value="bcrypt">bcrypt</option>'
-                div5 += '<option value="sha256">sha256</option>'
+            encode_data = ['sha256', 'sha3', 'bcrypt']
+            for i in encode_data:
+                if d_list[15] == i:
+                    div5 = '<option value="' + i + '">' + i + '</option>' + div5
+                else:
+                    div5 += '<option value="' + i + '">' + i + '</option>'
 
             return easy_minify(flask.render_template(skin_check(), 
                 imp = [load_lang('main'), wiki_set(), custom(), other2([0, 0])],

+ 17 - 9
func.py

@@ -1,15 +1,19 @@
 import email.mime.text
-import flask
-import json
+import urllib.request
 import sqlite3
 import hashlib
-import urllib.request
 import smtplib
 import bcrypt
-import re
+import flask
+import json
 import html
+import sys
+import re
 import os
 
+if sys.version_info < (3, 6):
+    import sha3
+
 from set_mark.tool import *
 from mark import *
 
@@ -125,11 +129,16 @@ def pw_encode(data, data2 = '', type_d = ''):
 
     if type_d == 'sha256':
         return hashlib.sha256(bytes(data, 'utf-8')).hexdigest()
+    elif type_d == 'sha3':
+        if sys.version_info < (3, 6):
+            return sha3.sha3_256(bytes(data, 'utf-8')).hexdigest()
+        else:
+            return hashlib.sha3_256(bytes(data, 'utf-8')).hexdigest()
     else:
         if data2 != '':
             salt_data = bytes(data2, 'utf-8')
         else:
-            salt_data = bcrypt.gensalt()
+            salt_data = bcrypt.gensalt(11)
             
         return bcrypt.hashpw(bytes(data, 'utf-8'), salt_data).decode()
 
@@ -145,10 +154,9 @@ def pw_check(data, data2, type_d = 'no', id_d = ''):
     else:
         set_data = db_data[0][0]
     
-    if set_data == 'sha256':
-        data = pw_encode(data)
-
-        if data == data2:
+    if set_data in ['sha256', 'sha3']:
+        data3 = pw_encode(data = data, type_d = set_data)
+        if data3 == data2:
             re_data = 1
         else:
             re_data = 0

+ 2 - 1
requirements.txt

@@ -2,4 +2,5 @@ tornado
 bcrypt
 flask
 flask-Reggie
-flask-compress
+flask-compress
+pysha3; python_version < "3.6"