2013-04-25 24 views
6

私はエレベータープロジェクトで楽しい仕事をしています。実際はハードウェアです。しかし、私はこれがソフトウェアに関する疑問であると思っています。私はこの機能を持つ必要はありませんが、実際には完全に冗長ですが、私は興味があったので、私はそれを追加して、私は学ぶことができます:Pシンプルな暗号化アルゴリズム

私は8ビットアドレス、および8ビットの暗号化コードを含む。 私はマスターと多くのスレーブデバイスを持っています。 マスタはスレーブのアドレスを知っており、暗号化コードを知っています。 スレーブはアドレスと暗号化コードも知っています。

私は、そのようなことを本当に単純なアルゴリズムたい:マスターはスレーブが「Y」を受信し、データ=機能2(でデータを抽出することができ、yは機能(データ、暗号化コードを)=、「Y」 を送信

をy、暗号化コード)

私はAND、XOR、ORなどでそれらを組み合わせて試してみましたが、理解できませんでした。

もう一度簡単なアルゴリズムを探しています。あなたが気にしないなら、私にもっと大きな好意を持って、そのような解決策や機能にどうやって来るかについてのいくつかの理論を説明することができます。

ありがとうございます!

E(x,key)=> y= x XOR key 
D(y,key)=> x= y XOR key 

非常にシンプル:

+0

シンプルで効果的な暗号化は、あなたが書いたものではなく、ライブラリの形で出てくるでしょう。単純な暗号化だけがROT13である可能性があります。 – minopret

+0

[XTEA](http://en.wikipedia.org/wiki/XTEA)は比較的単純ですが、RC4も同様ですが、正しく使用するのは少し難しいです。 – CodesInChaos

+1

非常に簡単なアプローチ - 'y = x XOR key'を送り、反対側に' x = y XOR key'を送りますが、そこには保護はあまりありません。 – Dukeling

答えて

16

あなたはそれが非常に簡単ですXOR cipher使用することができます!

暗号化をアップグレードして暗号ブロックチェーンにすることができます。つまり、データDをブロックに分割する必要があります。たとえば、ブロックB :

E(b0,key)=> y0= b0 XOR key 

結果その次のブロック暗号化のための鍵になるだろう:

E(b1,y0)=> y1= b0 XOR y0 .... E(bn,yn-1)=> yn= bn XOR yn-1 

enter image description here

元のデータはD={b0,b1.....bn}であり、暗号化されたデータは現在E={y0,y1....yn} であり、逆の処理を行う必要があります。それで全部です!

+1

CBCは*ブロック*暗号の操作モードです。あなたが書いていることは、CBCでも暗号でもありません。あなたは 'y0'を解読するために鍵を必要とし、他のすべてのブロックは単に難読化されています。 – Dennis

関連する問題