使用ASCII和128进制混淆字符串

2 投票
3 回答
4240 浏览
提问于 2025-04-16 09:21

假设一个字符串就像一个数字系统,在这个系统中,每个字符、删除符号或者任何ASCII字符都有一个对应的数字,这些数字可以在这个ASCII 表格中找到。那我们怎么在Python中把任意字符串转换成数字呢?

举个例子

#car = 35*128**3+99*128**2+97*128**1+114*128**0=75034866

3 个回答

0

对于任意长度的数字,在Python 2.x中使用Decimal,而在Python 3.x中直接用int就可以了。

关于“加密”,我就不太清楚了。

0

你想要找到一种方法来隐藏数据。

真正的加密需要用到一种叫做“陷门函数”的东西——这种函数计算起来很简单,但要反向计算就很难,除非你有特定的信息。

大部分加密都是基于质因数分解的。比如,爱丽丝把两个大的质数相乘,然后把结果给了鲍勃。鲍勃用这个大的质数来加密他的数据,使用一个加密函数。要想找到鲍勃加密函数的反向计算,就必须知道那两个原始的质数(而加密的时候并不需要知道)。找到这两个质数是一个非常耗费计算资源的任务,所以加密的数据是“安全”的。

正确实现这一切是非常困难的。如果你想保护数据,最好找一个现成的库来帮你完成。

补充说明:我刚才描述的是公钥加密。私钥加密的工作方式稍微不同。重要的是,有一个数学基础让我们认为,没有密钥或某种信息,解密加密数据是很困难的。

7

试试这个:

total = 0
for c in "#car":
    total <<= 7
    total += ord(c)
print total

结果:

75034866

如果想要恢复原来的字符串:

result = []
while total:
    result.append(chr(total % 128))
    total >>= 7
print ''.join(reversed(result))

结果:

#car

撰写回答