相关疑难解决方法(0)

整数的对称双射算法

我需要一种能够将32位有符号整数与另一个32位有符号整数进行一对一映射(即无冲突)的算法.

我真正关心的是足够的熵,因此函数的输出似乎是随机的.基本上我正在寻找类似于XOR Cipher的密码,但它可以生成更多任意外观的输出.虽然默默无闻,但安全并不是我真正关心的问题.

编辑以便澄清:

  1. 算法必须是对称的,这样我就可以在没有密钥对的情况下反转操作.
  2. 该算法必须是双射的,每个32位输入数必须生成一个32位唯一编号.
  3. 函数的输出必须足够模糊,只在输入中添加一个应该对输出产生很大影响.

预期结果示例:

F(100)= 98456
F(101)= -758F
(102)= 10875498
F(103)= 986541
F(104)= 945451245
F(105)= -488554

就像MD5一样,改变一件事可能会改变很多事情.

我正在寻找一个数学函数,所以手动映射整数不是我的解决方案.对于那些提出要求的人来说,算法速度并不是很重要.

algorithm encryption-symmetric bijection block-cipher

32
推荐指数
5
解决办法
5128
查看次数

使用随机主键创建django对象

我正在使用一个API,它希望我为使用API​​的事务生成不透明的"引用ID",换句话说,用户无法以任何方式猜测或推断的唯一引用.(是'推断'适当的英语?)

这就是我目前一起入侵的内容:

randomRef = randint(0, 99999999999999)
while Transaction.objects.filter(transactionRef = randomRef).count():
    randomRef = randint(0, 99999999999999)

Transaction.objects.create(user=user, transactionRef=randomRef, price=999)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的数据库目前似乎缺少交易.我已经意识到我的方法并不特别是线程安全(假设我在多个mod_wsgi apache线程上运行相同的django代码,它们都可以生成相同的randomRef!)

有没有人有更好的技巧为我生成随机主键?

python random django primary-key

9
推荐指数
3
解决办法
6932
查看次数

查询字符串参数混淆

我想在ASP.NET中混淆一个查询字符串参数.该站点将有大量请求,因此算法不应该太慢.

我的问题是我找到的所有算法都会产生不需要的字符(比如+/=)

这是我想要实现的一个例子:

www.domain.com/?id=1844
Run Code Online (Sandbox Code Playgroud)

www.domain.com/?id=3GQ5DTL3oVd91WsGj74gcQ
Run Code Online (Sandbox Code Playgroud)

混淆的参数应该只包括az和AZ以及0-9个字符.

我知道我可以使用base64进行加密,但这会生成不需要的字符,例如/or =+.

知道可以使用什么算法吗?

更新: 我知道UrlEncoding,我想避免编码字符串.因为这会在网址中生成%F2或%B2等字符.

.net c# asp.net encryption cryptography

7
推荐指数
2
解决办法
9346
查看次数

是否有"单行"方式生成加密字符串?

我想生成一个链接

http://site/?code=xxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

xxxxxxxxxx字符串生成的加密字符串在哪里user01.我需要稍后将其转换回来.

有没有一种简单的方法来加密和解密这样的字符串?

c# asp.net security encryption

3
推荐指数
2
解决办法
1352
查看次数