使用 ASCII 和基数 128 混淆字符串

发布于 2024-10-09 20:48:57 字数 290 浏览 3 评论 0原文

假设一个字符串是一个数字系统,其中每个事物(可以是字符、DEL 或任何 ASCII 事物)根据该 ASCII 都有一个对应的数字 表格。在Python中如何将属性的任意字符串转换为数字?

一个例子

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

Suppose a string is a number system where each thing, it can be a char, DEL or any ASCII thing, has a corresponding number according to this ASCII table. How can you convert arbitrary string of the property to number in Python?

An example

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

酷到爆炸 2024-10-16 20:48:57

试试这个:

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

Try this:

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

Result:

75034866

To get back the original string:

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

Result:

#car
抱猫软卧 2024-10-16 20:48:57

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

不知道“加密”。

For arbitrarily long numbers, use Decimal in Python 2.x and just int in Python 3.x.

No idea about 'encryption'.

牵强ㄟ 2024-10-16 20:48:57

您正在寻找一个映射来混淆数据。

真正的加密需要使用陷门函数——一种在计算上很容易以一种方式计算的函数,但如果没有特定信息,则很难计算其逆函数。

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

正确实施这一点非常困难。如果您想保证数据安全,请找到一个可以为您做到这一点的库。

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

You're looking to find a mapping to obfuscate the data.

Real encryption requires the use of a trap door function - a function that is computationally easy to compute one way, but the inverse of which is difficult to compute without specific information.

Most encryption is based on prime factorization. Alice multiplies two large prime numbers together, and gives the results to Bob. Bob uses this large prime number to encrypt his data using an encryption function. Finding the inverse of Bob's encryption function requires knowing the two original prime numbers (encryption does not). Finding these numbers is a very computationally expensive task, so the encrypted data is 'safe'.

Implementing this correctly is VERY difficult. If you want to keep data safe, find a library that does it for you.

EDIT: I should specify that what I described was public key encryption. Private key encryption works a bit differently. The important thing is that there's a mathematical basis for thinking that encrypted data will be hard to decrypt without a key or some sort.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文