1

只是玩玩,有没有 DSL

  • 可以随机生成
  • 操作文本或字符串并恢复它们
  • 像倒数密码一样工作。例如,如果生成的函数是F(),对于每一个字符串s1,你可以得到加扰的字符串s2 = F(s1)。然后G()可以推导出另一个反转F(),即G(s2) = s1
  • F()并且G()可以相同或不同。

还有几个额外的问题:

  • 任何编程语言都可以自动推导出逆向函数?

  • 并确保生成的函数F()是可逆的?

或者我可以从哪里开始的任何提示?

谢谢!

4

2 回答 2

1

一个很好的起点是用于分组密码的 Feistel 网络构建。从本质上讲,它是一个从函数构建迭代分组密码的基本框架。对函数的要求很少——它只需要一个根据密钥修改一条消息的函数。无论功能是什么,密码都将起作用;但是,函数的性质会影响密码的安全性。

http://en.wikipedia.org/wiki/Feistel_cipher

要回答您的其他一些问题:

任何编程语言都可以自动推导出逆向函数?

一般不会。特别是因为许多(大多数!)函数根本不可逆。

并确保生成的函数 F() 是可逆的?

使用Feistel网络建设将保证这一点。

于 2013-01-16T01:29:09.580 回答
0

回答我自己的问题:

http://en.wikipedia.org/wiki/Reversible_computing

http://strangepaths.com/reversible-computation/2008/01/20/en/

看起来它主要是理论上的 CS,所以这种 DSL 还没有被发明出来。

到目前为止prolog可以做可逆功能

于 2013-01-17T03:00:23.490 回答