2013-04-25 49 views
6

Tôi đang làm việc trên một dự án thang máy chỉ để giải trí, nó thực sự là phần cứng. Nhưng tôi nghĩ đây là một câu hỏi về phần mềm. Tôi không cần phải có tính năng này, trong thực tế nó là hoàn toàn dư thừa, nhưng tôi đã tò mò vì vậy tôi thêm nó anyway vì vậy tôi có thể tìm hiểu: PThuật toán mã hóa đơn giản

Tôi có một địa chỉ 8 bit, 8 bit dữ liệu xe buýt, và mã mã hóa 8 bit. Tôi có một thiết bị chủ và nhiều thiết bị nô lệ. Chủ biết địa chỉ của các nô lệ và biết mã mã hóa. Người nô lệ cũng biết địa chỉ của họ và mã mã hóa.

Tôi muốn có một thuật toán thực sự đơn giản như vậy:

Thầy sẽ gửi "y" ở đâu, y = function (dữ liệu, mã mã hóa) Các nô lệ nhận được "y" và có thể trích xuất dữ liệu bằng data = function2 (y, mã hóa)

Tôi đã thử chơi với AND, XOR, OR, vv ... và sự kết hợp của chúng, nhưng không thể tìm ra.

Một lần nữa tôi đang tìm các thuật toán đơn giản. Nếu bạn không nhớ bạn có thể làm cho tôi một ưu tiên lớn hơn và giải thích một số lý thuyết về cách tôi có thể đến một giải pháp/chức năng như vậy.

Cảm ơn bạn rất nhiều!

+0

Mã hóa hiệu quả _and_ đơn giản sẽ có dạng thư viện chứ không phải là thứ bạn tự viết. Mã hóa đơn giản có thể là ROT13. – minopret

+0

[XTEA] (http://en.wikipedia.org/wiki/XTEA) là tương đối đơn giản, RC4 là tốt, nhưng nó là một chút khó khăn để sử dụng một cách chính xác. – CodesInChaos

+1

Một cách tiếp cận rất đơn giản - gửi 'y = x XOR khóa', sau đó' x = y XOR khóa' ở phía bên kia, nhưng sẽ không có nhiều bảo vệ ở đó. – Dukeling

Trả lời

16

Bạn có thể sử dụng XOR cipher nó rất đơn giản:

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

rất đơn giản!

Bạn có thể nâng cấp mã hóa và đặt thành chuỗi mã hóa có nghĩa là bạn có dữ liệu D bạn cần chia nó thành khối, giả sử khối kích thước B. cho khối đầu tiên bạn làm :

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

kết quả nó sẽ là chìa khóa cho sự mã hóa khối tiếp theo:

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

enter image description here

Dữ liệu gốc là D={b0,b1.....bn} và dữ liệu được mã hóa hiện tại là E={y0,y1....yn} để giải mã dữ liệu được mã hóa mà bạn cần thực hiện theo cách ngược lại! đó là tất cả!

+1

CBC là phương thức hoạt động cho mật mã * block *. Những gì bạn mô tả không phải là CBC hay mã hóa. Bạn chỉ cần chìa khóa để giải mã 'y0', tất cả các khối khác chỉ đơn thuần là obfuscated. – Dennis

Các vấn đề liên quan