1

ちょっと遊んでみると、DSLはありますか

  • ランダムに生成できる
  • テキストまたは文字列を操作して復元する
  • 相互暗号のように機能します。たとえば、生成された関数が の場合、F()文字列ごとs1にスクランブルされた文字列を取得できますs2 = F(s1)。次に、別のものを逆にG()推定できます。F()G(s2) = s1
  • F()そしてG()、同じまたは異なる可能性があります。

そしていくつかの追加の質問:

  • 逆関数を自動的に推測できるプログラミング言語はありますか?

  • 生成された関数F()が可逆であることを確認しますか?

または、どこから始めればよいですか?

ありがとう!

4

2 に答える 2

1

良い出発点の 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 はまだ発明されていません。

これまでのところ、プロローグは可逆機能を実行できます

于 2013-01-17T03:00:23.490 に答える