吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3549|回复: 2
收起左侧

[Python 转载] 春节红包第三题解题记录

[复制链接]
52lxw 发表于 2019-2-26 14:57
分析在前辈的帖子里https://www.52pojie.cn/thread-873265-1-1.html,我用python解了一下,需安装pycrypto库

[Python] 纯文本查看 复制代码
#!/usr/bin/python
#-*- coding:utf-8-*-
from    Crypto.Cipher   import AES
#from    binascii    import b2a_hex,a2b_hex
import base64,binascii,re,hashlib
class AESCBC:
    def __init__(self, key):
        self.key = key
        self.mode = AES.MODE_CBC
        self.bs = 16  # block size
        self.PADDING = lambda s: s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs)
    
    def encrypt(self, text):
        generator = AES.new(self.key, self.mode,self.key) 
        try:
            crypt = generator.encrypt(self.PADDING(text))
            crypted_str = base64.b64encode(crypt)
            result = crypted_str.decode()
        except Exception:
            result = '加密失败,请确认输入是否有误!'
        return result
    
    def decrypt(self, text):
        generator = AES.new(self.key, self.mode,self.key) 
        text += (len(text) % 4) * '='
        try:
            decrpyt_bytes = base64.b64decode(text)
            meg = generator.decrypt(decrpyt_bytes)
            # 去除解码后的非法字符
            result = re.compile('[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f\n\r\t]').sub('', meg.decode())
        except Exception:
            result = '解密失败,请确认输入是否有误!'
        return result
def     main():

        name = input("input uid:")
        sha1 = hashlib.sha1()
        sha1.update(name.encode('utf8'))
        #key = binascii.a2b_hex('8380cf291d73c51efb5351d7df0268cb89be530e'[:32])#秘钥的长度必须为16
        key = binascii.a2b_hex(sha1.hexdigest()[:32])
        result = 'HappyNewYearFrom52PoJie.Cn'
        cryptor = AESCBC(key)#这里选用的是CBC模式

        plainText = cryptor.encrypt(result)#解密函数
        print((plainText))



if      __name__=="__main__":
        main()

免费评分

参与人数 2吾爱币 +6 热心值 +2 收起 理由
kizzlepc + 1 + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kizzlepc 发表于 2019-2-28 09:11
这段加密、解密的示例代码很有用
whyida 发表于 2020-3-24 21:25
本帖最后由 whyida 于 2020-3-24 21:27 编辑

楼主的代码运行不了,自己写了一段代码。
[Python] 纯文本查看 复制代码
#python2.7
from Crypto.Util.Padding import pad, unpad
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
import base64
import base64,binascii,re,hashlib


data = '483032'
shab1 = hashlib.sha1()
shab1.update(bytes(data.encode('utf-8')))

key = binascii.a2b_hex(shab1.hexdigest()[:32])


result = 'HappyNewYearFrom52PoJie.Cn'
iv = key

cipher1 = AES.new(key, AES.MODE_CBC,iv)
ct = cipher1.encrypt(pad(result, AES.block_size))
ct1 = base64.b64encode(ct)
cipher2 = AES.new(key, AES.MODE_CBC)

print(ct1)


您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 02:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表