python 字符串加密 唯一数字_将30位数字加密成6个字符的字母数字字符串

我正在寻找一种加密/混淆30位数字的方法。在

结果将被分成3组,用户可以看到一个6个字符的字母数字,用base32字母编码,但是用户不能在alphanumeric字符串中找到模式。例如,用户可以看到3个字符串:ASDFGH、LKJHGF、ZXCVBN,这些字符串可能映射到数字1073741821、1073741822、1073741823。但是,这是一个他们不应该轻易弄明白的模式。在

我看过一些加密算法,比如DES。这是一个糟糕而天真的尝试:import struct

from Crypto.Cipher import DES

from .baseconv import base32_urlsafe

_KEY = '\x81\x98\xe1\x14

_encryptor = DES.new(_KEY)

def encrypt_number(number):

encrypted_i64 = struct.unpack(

'!Q', _encryptor.encrypt(struct.pack('!Q', number))

)[0]

encrypted_i30 = encrypted_i64 >> 34

return base32_urlsafe.encode(encrypted_i30)

但是很明显,如果需要的话,我将无法解密字符串,并且这种方法会丢失唯一性。另外还讨论了使用异或,但这太可预测了,因为更多的情况下不是数字将在一个连续的序列中。在

我从来没必要这样编码过。所以,我正在寻找一些加密算法/方法来研究和考虑。我使用的是python,但是欢迎使用其他语言的想法或示例。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值