使用ASCII和128进制混淆字符串
假设一个字符串就像一个数字系统,在这个系统中,每个字符、删除符号或者任何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