本文共 2434 字,大约阅读时间需要 8 分钟。
利用RSA算法进行加密和解密操作,以下是关键步骤说明:
import rsaen = 65537rsaPrivateKey = rsae.RSA_PrivateKey(n, 86934482296048119190666062003494800588905656017203025617216654058378322103517, 285960468890451637935629440372639283459, 304008741604601924494328155975272418463)# 加密过程with open("encrypted_file", "rb") as f: cipher_text = f.read()# 解密过程plaintext = rsaPrivateKey.decrypt(cipher_text)print(plaintext)
以下是使用固定的Base64码表进行编码和解码的示例:
import base64plain_text = 'HelloWorld'# 编码base64_bytes = base64.b64encode(plain_text.encode('utf-8'))base64_str = base64_bytes.decode('utf-8')print(base64_str) # 'SGVsbG9Xb3JsZA=='# 解码base64_bytes = base64.b64decode(base64_str)plain_text = base64_bytes.decode('utf-8')print(plain_text) # 'HelloWorld'
可以通过自定义码表实现不同编码方式:
import base64import stringoriginal_text = "Base64加密"# 定义新的码表custom_char_table = string.ascii_letters + string.digits + '+/'new_table = str.maketrans(string.ascii_letters + string.digits + '+/', 'ABCDEFGHIMN OPQRSTUVWXYZabcdefghimnopqrstuvwxyz0123456789+-/'.strip())print(new_table) # 测试编码encoded_text = base64.b64decode(original_text.translate(new_table))print(encoded_text)
使用str.maketrans
方法进行字符转换,以下是主要示例:
transtab = str.maketrans({'a': 'b'}) news = 'apple' print(news.translate(transtab)) # 'bpple'
transtab = str.maketrans('ap', 'bs') news = 'apple' print(news.translate(transtab)) # 'bssle'
transtab = str.maketrans('ap', 'bs', 'al') news = 'apple' print(news.translate(transtab)) # 'sse'
使用z3进行数学求解,以下是常见使用方法:
from z3 import *x = Real('x')y = Real('y')s = Solver()s.add(30 * x + 15 * y == 675)s.add(12 * x + 5 * y == 265)if s.check(): result = s.model() print(result)else: print('无解')
import hashlibm = hashlib.sha256()m.update(b'Nobody inspects the spammish repetition'.encode('utf-8'))print(m.hexdigest())
import hashlibmd5_hash = hashlib.md5()md5_hash.update('hello world'.encode('utf-8')) print(md5_hash.hexdigest()) print(len(md5_hash.hexdigest())) # MD5摘要长度为32字节
from pyDes import des, PAD_PKCS5DES_KEY = "test*key*"des_key = des(DES_KEY, des.ECB, b'test*key*', pad=PAD_PKCS5)plaintext = '哈哈'.encode('utf-8')ciphertext = des_key.encrypt(plaintext)print(ciphertext.hex()) Plaintext恢复: plaintext = des_key.decrypt(ciphertext) print(plaintext.decode('utf-8'))
以上为本人在CTF过程中总结的常用工具与方法,持续更新中。如需了解更多技术细节,可参考各模块对应的官方文档或开源项目。
转载地址:http://xdrqz.baihongyu.com/