예제 #1
0
    def get(self):
        auth = self.get_query_argument("auth", default=None)
        # after users click url in their email, show the new password page
        if auth:
            try:
                svalue = xxtea.decrypt_hex(
                    utf8(auth),
                    self.get_byte_16(self.settings.get("cookie_secret")))
                (username, password, t) = svalue.split("|")
            except:
                self.custom_error("参数错误,请重新找回密码", jump="/forgetpwd")

            if time.time() - float(t) > 30 * 60:
                self.custom_error("链接已过期,请在30分钟内点击链接找回密码", jump="/forgetpwd")
            user = yield self.db.member.find_one({
                "username": username,
                "password": password
            })
            if user:
                self.render("renewpwd.htm", auth=auth)
            else:
                self.custom_error("参数错误,请重新找回密码", jump="/forgetpwd")
        # first visit forgetpwd
        else:
            self.render("forgetpwd.htm", success=None)
예제 #2
0
파일: test.py 프로젝트: ifduyue/xxtea
 def test_encrypt_hex_nopadding_zero(self):
     key = os.urandom(16)
     for i in (8, 12, 16, 20):
         data = b'\0' * i
         enc = xxtea.encrypt_hex(data, key, padding=False)
         dec = xxtea.decrypt_hex(enc, key, padding=False)
         self.assertEqual(data, dec)
예제 #3
0
def decrypt_hex(key, data):
    """
    @note: 解密内容变为hex
    @return: bytes
    """
    try: return xxtea.decrypt_hex(data, key)
    except: return b""
예제 #4
0
 def test_encrypt_hex_nopadding_zero(self):
     key = os.urandom(16)
     for i in (8, 12, 16, 20):
         data = b'\0' * i
         enc = xxtea.encrypt_hex(data, key, padding=False)
         dec = xxtea.decrypt_hex(enc, key, padding=False)
         self.assertEqual(data, dec)
예제 #5
0
 def TEstA_Read(self):
     text = serialPort.readline()
     text = text.decode("utf-8")
     text = text[:-1]
     text = text.lower()
     plaintext = xxtea.decrypt_hex(text.encode(),
                                   self.secret_key.encode(),
                                   padding=False)
     return plaintext.decode("ascii")
예제 #6
0
def decrypt_hex(key, data):
    """
    @note: 解密内容变为hex
    @return: bytes
    """
    try:
        return xxtea.decrypt_hex(data, key)
    except:
        return b""
예제 #7
0
    def post(self):
        email = self.get_body_argument("email", default=None)
        auth = self.get_body_argument("auth", default=None)
        # after users submit their email
        if email:
            # check captcha
            captcha = self.get_body_argument("captcha", default="")
            if not Captcha.check(captcha, self):
                self.custom_error("验证码错误")

            user = yield self.db.member.find_one({"email": email})
            if not user:
                self.custom_error("不存在这个Email")
            sign = "%s|%s|%s" % (user["username"], user["password"],
                                 time.time())
            svalue = xxtea.encrypt_hex(
                utf8(sign),
                self.get_byte_16(self.settings.get("cookie_secret")))
            url = self.settings.get(
                "base_url") + "/forgetpwd?auth=%s" % url_escape(svalue, False)
            Sendemail(self.settings.get("email")).send(
                to=user["email"],
                orgin="*****@*****.**",
                title=u"找回密码 - %s" % self.settings["site"]["webname"],
                content=
                u"点击链接找回你的密码:<br /><a href=\"%s\">%s</a><br />如果你没有找回密码,请忽视这封邮件"
                % (url, url))
            self.render("forgetpwd.htm", success=True)
        # after users click url in their email, and submit a new password
        elif auth:
            newpwd = self.get_body_argument("password")
            try:
                svalue = xxtea.decrypt_hex(
                    utf8(auth),
                    self.get_byte_16(self.settings.get("cookie_secret")))
                (username, password, t) = svalue.split("|")
            except:
                self.custom_error("参数错误,请重新找回密码", jump="/forgetpwd")
            if time.time() - float(t) > 30 * 60:
                self.custom_error("链接已过期,请在30分钟内点击链接找回密码", jump="/forgetpwd")
            newpwd = yield self.backend.submit(hash.get, newpwd)
            user = yield self.db.member.find_and_modify(
                {
                    "username": username,
                    "password": password
                }, {"$set": {
                    "password": newpwd
                }})
            if not user:
                self.custom_error("参数错误,请重新找回密码", jump="/forgetpwd")
            else:
                self.custom_error("密码修改成功", jump="/login", status="success")
        else:
            self.custom_error("不存在这个Email")
예제 #8
0
 def decode_payload(self, payload):
     """Decoding text."""
     try:
         unescaped = html.unescape(payload)
         encoded = json.loads(unescaped)
         ct = xxtea.decrypt_hex(encoded.encode(), self.secret)
     except Exception:
         print("[!] Failure to retrieve data or bad key: {}".format(
             Exception))
         sys.exit(0)
     return bytes(ct).decode('utf-8')[:-1]
예제 #9
0
파일: auth.py 프로젝트: yangxue088/Minos
    def post(self):
        email = self.get_body_argument("email", default=None)
        auth = self.get_body_argument("auth", default=None)
        # after users submit their email
        if email:
            # check captcha
            captcha = self.get_body_argument("captcha", default="")
            if not Captcha.check(captcha, self):
                self.custom_error("验证码错误")

            user = yield self.db.member.find_one({
                "email": email
            })
            if not user:
                self.custom_error("不存在这个Email")
            sign = "%s|%s|%s" % (user["username"], user["password"], time.time())
            svalue = xxtea.encrypt_hex(utf8(sign), self.get_byte_16(self.settings.get("cookie_secret")))
            url = self.settings.get("base_url") + "/forgetpwd?auth=%s" % url_escape(svalue, False)
            Sendemail(self.settings.get("email")).send(
                to=user["email"],
                orgin="*****@*****.**",
                title=u"找回密码 - %s" % self.settings["site"]["webname"],
                content=u"点击链接找回你的密码:<br /><a href=\"%s\">%s</a><br />如果你没有找回密码,请忽视这封邮件" % (url, url)
            )
            self.render("forgetpwd.htm", success=True)
        # after users click url in their email, and submit a new password
        elif auth:
            newpwd = self.get_body_argument("password")
            try:
                svalue = xxtea.decrypt_hex(utf8(auth), self.get_byte_16(self.settings.get("cookie_secret")))
                (username, password, t) = svalue.split("|")
            except:
                self.custom_error("参数错误,请重新找回密码", jump="/forgetpwd")
            if time.time() - float(t) > 30 * 60:
                self.custom_error("链接已过期,请在30分钟内点击链接找回密码", jump="/forgetpwd")
            newpwd = yield self.backend.submit(hash.get, newpwd)
            user = yield self.db.member.find_and_modify({
                "username": username, "password": password
            }, {
                "$set": {"password": newpwd}
            })
            if not user:
                self.custom_error("参数错误,请重新找回密码", jump="/forgetpwd")
            else:
                self.custom_error("密码修改成功", jump="/login", status="success")
        else:
            self.custom_error("不存在这个Email")
예제 #10
0
def get_environ(varname='', default='', key=None):
    """
    获取环境变量值(解密数据)

    :param varname: str, 环境变量名称
    :param default: 缺省值
    :param key: 加密的 key
    :return: str
    """
    data = os.getenv(varname, default)
    if key:
        try:
            data = xxtea.decrypt_hex(data.encode('utf-8'), key).decode('utf-8')
        except Exception:
            data = default

    return data
예제 #11
0
def checkCookie(auth, saltkey):
    if ((auth is not None) & (saltkey is not None)):
        try:
            dec = xxtea.decrypt_hex(str.encode(auth), str.encode(saltkey))
            mannageInfo = bytes.decode(dec)
            mannageList = mannageInfo.split("\t")
            print(mannageList)
        except (Exception) as e:
            print(e)
            return False
        if (len(mannageList) != 2):
            return False
        else:
            g.appname = "swortect"
            return True
    else:
        return False
예제 #12
0
파일: auth.py 프로젝트: yangxue088/Minos
    def get(self):
        auth = self.get_query_argument("auth", default=None)
        # after users click url in their email, show the new password page
        if auth:
            try:
                svalue = xxtea.decrypt_hex(utf8(auth), self.get_byte_16(self.settings.get("cookie_secret")))
                (username, password, t) = svalue.split("|")
            except:
                self.custom_error("参数错误,请重新找回密码", jump="/forgetpwd")

            if time.time() - float(t) > 30 * 60:
                self.custom_error("链接已过期,请在30分钟内点击链接找回密码", jump="/forgetpwd")
            user = yield self.db.member.find_one({
                "username": username, "password": password
            })
            if user:
                self.render("renewpwd.htm", auth=auth)
            else:
                self.custom_error("参数错误,请重新找回密码", jump="/forgetpwd")
        # first visit forgetpwd
        else:
            self.render("forgetpwd.htm", success=None)
예제 #13
0
def index(request):
    a = xxtea.encrypt_hex(data, key)
    b = xxtea.decrypt_hex(enchex, key)
    return HttpResponse(a + " " + b)
예제 #14
0
파일: test.py 프로젝트: ifduyue/xxtea
 def test_decrypt_hex(self):
     data = xxtea.decrypt_hex(self.hexenc, self.key)
     self.assertEqual(data, self.data)
예제 #15
0
파일: XXTEA.py 프로젝트: myghtyil/crypt_2
    kf.write(key)
    kf.close()
    print("ключ")
    print(key)

    shifr = xxtea.encrypt_hex(data, key.encode('utf-8'))
    print("шифр")
    print(shifr.decode('utf-8'))
    sh = open("shifr.txt", "w", encoding='utf-8')
    sh.write(shifr.decode('utf-8'))
    sh.close()
else:
    df = open("shifr.txt", "r")
    data = df.read().encode('utf-8')
    df.close()
    print("Входящие данные")
    print(data)

    kf = open("key.txt", "r")
    key = kf.read().encode('utf-8')
    kf.close()
    print("ключ")
    print(key)

    shifr = xxtea.decrypt_hex(data, key)
    sh = open("deshifr.txt", "w", encoding='utf-8')
    sh.write(shifr.decode('utf-8'))
    sh.close()
    print("Расшифровка")
    print(shifr.decode('utf-8'))
예제 #16
0
파일: test.py 프로젝트: howie1013/xxtea
 def test_decrypt_hex(self):
     data = xxtea.decrypt_hex(self.hexenc, self.key)
     self.assertEqual(data, self.data)
예제 #17
0
파일: demo.py 프로젝트: yfeng2018/python-1
@author = super_fazai
@File    : demo.py
@connect : [email protected]
'''

# xxtea加解密算法
# pip3 install xxtea
# https://pypi.org/project/xxtea/

import os
import xxtea
import binascii

# Key must be a 16-byte string.
key = os.urandom(16)
print('key: {}'.format(key))
s = b"xxtea is good"

enc = xxtea.encrypt(s, key)
dec = xxtea.decrypt(enc, key)
print(s == dec)

hexenc = xxtea.encrypt_hex(s, key)
print(hexenc)
print(s == xxtea.decrypt_hex(hexenc, key))

from base64 import b64decode

key = os.urandom(16)
s = 'QUvZd5mSBl+PxFo8LFfHOdVRBxbdL6CC0JrFtY/DlOHZQuLhrnRzdUvdq4ZHTCWuNTWCm5/K/pQ8jw8FaX7tPW1QR7ik7FqvDrKIPPEg4n7PjQogcabkyA4cBKk='
xxtea.decrypt(s, key=key)