Python中如何简单地对一串数字字符串进行加密?

比如:
将数字 0 转换为 30
数字 2 转换为 3F
数字 3 转换为 3D
数字 4 转换为 35

a= ‘0234’
怎么才能 a = '303F3D35’
Python中如何简单地对一串数字字符串进行加密?

30 回复

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])
好久没写 有点忘了 手机敲代码可真难受

num_map = {
“0”: “30”,
“2”: “3F”,
“3”: “3D”,
“4”: “35”,
}
a = '0234’
result = “”.join([num_map[n] for n in a])

虽然蠢,但有效 /w\

你是要求能加密,还是加密之后还可以再解密。如果不需要解密就很简单了,利用已有的加密算法很容易实现的,比如我最近设计的一个登录系统用了 md5 加密。如果需要可以解密的话,可以自己建立一套运算规则,比如利用 ascii 码做一个简单的运算。但是自己建立的规则安全性不知道怎么样。

如果能映射到 uint64 空间,建议先做跳码再转换。

既然是都是数字,放数组里吧,数字直接当索引

建立数字和加密字符串的对应 map。
字符串转字符数组。
循环,利用查表法,拼接新的加密串。
不过应该针对所有的字符串都循环相同的次数。
比如人为指定循环次数为 100 次。
这样每次加密用的时间都相同。

一个 for 不就搞定了吗

哈夫曼,还能压缩

最简单的方法就是做个映射集合,然后对要加密的字符循环替换。。。

自己设定的规则,除非是你数学很牛逼,不然一般都不如现成的

这是哪门子加密呃,几乎上面每一层我都没看出来这玩意儿和加密的关系

没看明白究竟问题在哪
难道是想问 字符串怎么打散然后循环替换?

自己弄着玩就算了,真要加密是要经得起密码分析(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 不是加密。。。。

回到顶部