使用ASCII和base 128混淆字符串

时间:2011-01-03 21:37:52

标签: python encoding obfuscation ascii

假设一个字符串是一个数字系统,其中每个东西,它可以是char,DEL或任何ASCII的东西,根据此ASCII table具有相应的数字。如何在Python中将属性的任意字符串转换为数字?

示例

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

3 个答案:

答案 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

答案 1 :(得分:0)

对于任意长数,在Python 2.x中使用Decimal,在Python 3.x中使用int。

不知道'加密'。

答案 2 :(得分:0)

您正在寻找一种模糊数据的映射。

真正的加密需要使用陷阱门功能 - 这种功能在计算上很容易以单向计算,但如果没有特定信息,其反向很难计算。

大多数加密都基于素数分解。 Alice将两个大素数相乘,并将结果提供给Bob。 Bob使用这个大的素数来加密他的数据使用加密函数。找到Bob的加密函数的倒数需要知道两个原始素数(加密不是)。找到这些数字是一项计算成本非常高的任务,因此加密数据是“安全的”。

正确实现这一点非常困难。如果您想保证数据的安全,请找一个能为您完成数据的库。

编辑:我应该指出我所描述的是公钥加密。私钥加密的工作方式略有不同。重要的是,有一个数学基础可以认为如果没有密钥或某种密钥,加密数据将难以解密。