Python中如何简单地对一串数字字符串进行加密?
比如:
将数字 0 转换为 30
数字 2 转换为 3F
数字 3 转换为 3D
数字 4 转换为 35
a= ‘0234’
怎么才能 a = '303F3D35’
Python中如何简单地对一串数字字符串进行加密?
translate
import base64
from cryptography.fernet import Fernet
# 生成密钥(实际应用中应安全存储)
key = Fernet.generate_key()
cipher = Fernet(key)
def encrypt_number_string(number_str: str) -> str:
"""加密数字字符串"""
encrypted = cipher.encrypt(number_str.encode())
return base64.urlsafe_b64encode(encrypted).decode()
def decrypt_number_string(encrypted_str: str) -> str:
"""解密数字字符串"""
encrypted = base64.urlsafe_b64decode(encrypted_str.encode())
return cipher.decrypt(encrypted).decode()
# 使用示例
original = "13800138000"
encrypted = encrypt_number_string(original)
decrypted = decrypt_number_string(encrypted)
print(f"原始: {original}")
print(f"加密: {encrypted}")
print(f"解密: {decrypted}")
print(f"验证: {original == decrypted}")
这个方案用cryptography库的Fernet对称加密,它基于AES-128-CBC和HMAC-SHA256,既安全又简单。加密后通过base64编码得到可打印字符串,方便存储传输。
安装依赖:
pip install cryptography
注意: 密钥key需要妥善保存,解密时必须用同一个密钥。
用这个方案可以快速实现数字字符串的加解密。
小白一个 想到的就是 a[-1] 一个个的 if 替换 不知道有什么简单的方法吗
额…好像不行 translate 是单个字符映射
直接用字典吧…
求例子
我用手机 只能大概写一下,
strmap ={“0”:“30”,…}
src ="0234"
str.join([strmap[x] for x in str])
好久没写 有点忘了 手机敲代码可真难受
你是要求能加密,还是加密之后还可以再解密。如果不需要解密就很简单了,利用已有的加密算法很容易实现的,比如我最近设计的一个登录系统用了 md5 加密。如果需要可以解密的话,可以自己建立一套运算规则,比如利用 ascii 码做一个简单的运算。但是自己建立的规则安全性不知道怎么样。
如果能映射到 uint64 空间,建议先做跳码再转换。
既然是都是数字,放数组里吧,数字直接当索引
建立数字和加密字符串的对应 map。
字符串转字符数组。
循环,利用查表法,拼接新的加密串。
不过应该针对所有的字符串都循环相同的次数。
比如人为指定循环次数为 100 次。
这样每次加密用的时间都相同。
一个 for 不就搞定了吗
哈夫曼,还能压缩
最简单的方法就是做个映射集合,然后对要加密的字符循环替换。。。
自己设定的规则,除非是你数学很牛逼,不然一般都不如现成的
这是哪门子加密呃,几乎上面每一层我都没看出来这玩意儿和加密的关系
用 hashids.org 最省事
没看明白究竟问题在哪
难道是想问 字符串怎么打散然后循环替换?
自己弄着玩就算了,真要加密是要经得起密码分析(cryptanalysis)的。一般都是用现有的算法,比如 DES/AES/ECC/RSA,你自己搞出来一套是很难的。
str.maketrans(x[, y[, z]])
str.translate
temp = {‘0’: ‘30’, ‘2’: ‘3F’, ‘3’: ‘3D’, ‘4’: ‘35’}
a = ‘0234’
print(’’.join(map(temp.get, a)))
这不就是那个 Python challenge 第二题吗
#8 噗~“设计” “ md5 加密”
好高级啊
这个东西并不高级啊,你想说啥就直说
你这个 python3 不一定能用吧 python3 map 出来是一个迭代器
这和加密什么关系。。。。。加密肯定用已经成熟的加密方案。否则就是自己找死
ps。。md5 不是加密。。。。


