- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
"loelh" 现在我想从中导出一个 key k,我可以用它来撤销洗牌-6ren">
我正在寻找一种可以从已经发生的洗牌过程中派生出 key 的算法。
假设我们有被打乱的字符串“Hello”:
"hello" -> "loelh"
现在我想从中导出一个 key k
,我可以用它来撤销洗牌。因此,如果我们使用 k
作为确定性改组算法的输入参数,例如 Fisher-Yates并再次洗牌 "loelh"
,我们将恢复初始字符串 "hello"
。
我的意思不是简单地使用一个相同的确定性洗牌算法来洗牌和去洗牌。那是因为在我的例子中,第一个字符串在经典意义上不会被真正洗牌。实际上会有两组刚刚给出的数据(字节或位数组),我们想从第一组到第二组只用一个之前导出的 key 。
我希望清楚我想要实现的目标,我将不胜感激所有提示或建议的解决方案。
问候,优点
更新:
另一个尝试:基本上,人们也可以将其称为一堆数据的确定性转换,例如一个字节数组,但我会坚持使用“hello”字符串示例。
假设我们有一个转换算法 transform(data, "unknown seed")
其中 data
是 "hello"和 unknown seed
是我们正在寻找的。 transform
的结果是“loelh”。我们正在寻找可以用来逆转这一过程的“未知种子”。在“未知种子”生成时,输入数据和结果当然都是已知的。
稍后我想使用“未知种子”(应该已经知道 ;-) 再次获取原始字符串:所以这个 transform("loelh", seed)
应该导致再次 “你好”
。
因此您也可以将其视为方程式的形式,例如 data*["unknown value"]=resultdata
我们正试图找到未知值(运算符 *
可以是任何类型的操作)。
最佳答案
首先,让我们把问题大大简化。我们假设您始终在排列“abcde”,而不是排列“hello”,因为这样会更容易理解。
随机播放是排列的随机生成。洗牌如何产生排列无关紧要;洗牌产生排列,这就是我们需要知道的。
让我们将排列表示为包含数字 1 到 5 的字符串。假设随机播放产生排列“21453”。也就是说,我们取第一个字母并将其放在位置 2:_a___
。我们取第二个字母并将其放在位置 1,ba___
。我们取第 3 个字母并将其放在位置 5:ab__c
。我们把第四个字母放在位置 3,bad_c
,我们把第五个字母放在位置 4,badec
。
现在您希望推断出一个“ key ”,它允许您“取消排列”排列。好吧,这只是另一种排列,称为逆排列。要计算“21453”的逆排列,请执行以下操作:
现在阅读第二列; “21453”的逆排列是“21534”。我们正在取消排列“badec”。我们把第一个字母放在位置 2:_b___
。我们将第二个字母放在位置 1:ab___
。我们将第三个字母放在位置 4:ab_d_
。我们将第四个字母放在位置 5:ab_de
。并且我们将第五个字母放在位置 3:abcde
。
关于algorithm - 反向确定性随机播放 -> 派生 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22544146/
我使用 Deflater 编写了一个备份程序SHA-1 用于存储文件和哈希值。我看到Java的Deflater使用zlib 。如果我显式设置 Deflater 的级别,无论平台和 JRE 版本如何,我
考虑以下算法: r = 2 while r >= 1: x = -1 + 2 * random.random() y = -1 + 2 * random.random() r
我正在编写一个持久保存到磁盘的映射类。我目前只允许 str键,但如果我可以使用更多类型会很好:希望最多可以是任何可散列的(即与内置 dict 相同的要求),但更合理的是我会接受字符串、unicode、
我有一个不使用随机化的脚本,当我运行它时会给出不同的答案。我希望每次运行脚本时答案都是一样的。该问题似乎只发生在某些(病态)输入数据上。 该代码段来自一种计算线性系统特定类型 Controller 的
这对我来说不是问题,没有它我也可以生活,但我只是好奇这是否可能以及如何实现。 今天我了解到,scrapy.Request 不会按照启动的顺序完成。 伪代码示例: class SomeSpider(sc
我正在运行这个 SVD来自 scipy 的求解器,代码如下: import numpy as np from scipy.sparse.linalg import svds features = np
我正在尝试使用确定性 Miller-Rabin 算法实现素数检查功能,但结果并不总是正确的:在检查前 1,000,000 个数字时,它只找到 78,495 而不是 78,498。 这是使用 [2, 7
我正在审查各种 Android 声音 API,我想知道我应该使用哪一个。我的目标是获得低延迟的音频,或者至少是关于播放延迟的确定性行为。 我们遇到了很多问题,Android 声音 API 似乎很垃圾,
过去,我处理过对时间要求严格的软件开发。这些应用程序的开发基本上是这样进行的:“让我们编写代码,测试延迟和抖动,并优化它们,直到它们在可接受的范围内。”我觉得这非常令人沮丧。这不是我所说的 适当的工程
给定: SQL Server 表名为 TEST_TABLE TEST_TABLE 中名为 TEST_FIELD 的列 VARCHAR(50) NOT NULL 第 1 行:10YR3/6 第 2 行:
我在 64 位 Windows PC 上使用 Microsoft Visual Studio Community 2015,版本 14.xxx。 程序读取一个文本文件,其中每一行都是桥牌(四名玩家,每
我需要在 PHP 中创建一个可证明公平(确定性和种子)加密安全 (CS) 随机数生成器。我们正在运行 PHP 5,而 PHP 7 现在并不是一个真正的选择。但是,我找到了 PHP 7 的新 CS 函数
我是一名优秀的程序员,十分优秀!