Câu trả lời:
Bạn không muốn mã hóa mật khẩu (PIN) - bạn muốn băm chúng. Khi ai đó nhập mật khẩu, bạn băm mật khẩu đó và so sánh hàm băm với hàm băm được lưu trữ. Ưu điểm của phương pháp này (được sử dụng trong hơn 30 năm) là ngay cả khi ai đó nắm giữ nguồn và băm, họ vẫn không thể biết mã PIN nào khớp với băm, miễn là bạn chọn hàm băm đủ mạnh .
Bạn không muốn tự mình thực hiện mã hóa - bạn muốn sử dụng thư viện của người khác, đặc biệt là thư viện có triển khai mở đã được thử nghiệm bởi một cộng đồng lớn. Mã hóa là khó, kiểm tra là khó và kiểm tra mã hóa là khó khăn, vì vậy hãy nhờ người khác làm điều đó cho bạn.
Bạn nên kiểm tra Thư viện tiền điện tử AVR , được cấp phép với GPLv3. Ngoài ra còn có một triển khai Skein cho AVR .
Liên kết mà Hristos đã đăng, trong khi có thể hữu ích, chắc chắn không được tính là "mã hóa". Nó thực sự chỉ là "obfuscation".
Mật mã học đúng là nổi tiếng dễ bị sai, ngay cả đối với những người biết toán học.
Đáp lại bài đăng gốc - các phương thức tấn công nào sẽ cho phép ai đó có quyền truy cập vào mã PIN trong EEProm? Chắc chắn nếu họ đã có mà xa vào thiết bị điện tử của bạn mà họ chỉ có thể "snip dây đỏ" và mở cửa?
Nếu bạn nào đó làm có một hệ thống nơi những kẻ tấn công có thể được giữ trong những nội dung mà không cần EEProm đã có đủ quyền truy cập vào mở cửa của bạn, có thể bạn muốn thiết kế lại nó. Bạn có thể xem các hàm băm một chiều tương tự như băm mật khẩu Unix - theo cách đó EEProm không cần chứa khóa giải mã - vấn đề là không gian tìm kiếm mã PIN rất nhỏ - nếu tôi có thể tải xuống phiên bản băm của PIN, tôi có thể nhanh chóng thử tất cả 10.000 mã PIN có thể, tôi nghi ngờ bất kỳ máy tính xách tay hiện đại nào cũng sẽ chạy tất cả chúng trong vài giây.
Vấn đề tôi thấy là nếu họ có thể nhìn thấy ghim của bạn thì họ cũng có thể thấy chương trình của bạn mã hóa / kiểm tra / giải mã ghim của bạn. Ngoài ra, nếu họ có chip của bạn, họ có thể không chỉ thay đổi chương trình để luôn cho kết quả khả quan (bỏ qua kiểm tra một cách hiệu quả) cho bất kỳ mã pin nào được nhập.
Làm thế nào để bạn có kế hoạch giải mã mã PIN được mã hóa, để kiểm tra xem người dùng đã nhập mã PIN hợp lệ chưa? Bạn sẽ cần lưu trữ khóa giải mã ... tại thời điểm đó nếu kẻ tấn công có thể đọc eeprom của bạn, anh ta cũng có thể đọc đèn flash của bạn để tìm khóa mã hóa. Về cơ bản kết xuất toàn bộ mã hóa của bạn hoàn toàn vô dụng. Cũng như những người khác nói, nếu anh ta đã có khả năng đọc chip của bạn, anh ta có thể viết một chương trình mới. Đơn giản hơn nhiều khi chỉ cần mở cửa, tôi nghi ngờ bất cứ ai cũng sẽ gặp rắc rối khi cố gắng hack chip của bạn.
Đây là một phương pháp mã hóa đơn giản trong C có thể dễ dàng chuyển sang Arduino. Đây có vẻ như là cách dễ nhất để mã hóa dữ liệu với tài nguyên hạn chế của arduino.
-EDIT- Để giữ khóa ngoài chương trình, bạn có thể tạo một nửa số PIN làm khóa. Điều này có nghĩa là chương trình của bạn lấy một nửa mã PIN để giải mã 1/2 PIN được mã hóa được lưu trữ trong EEProm. Nếu khóa được giải mã từ EEProm khớp với phần pin của bạn không phải là khóa, cửa sẽ mở khóa. Điều này sẽ chỉ hoạt động trong một tình huống mà những kẻ xâm nhập không thể phá cửa hoặc lập trình lại Arduino.
Tôi ghét không trả lời câu hỏi trong khi hỏi người khác, nhưng ...
Có một số lý do tại sao thiết bị của bạn không phải là bằng chứng giả mạo? Tôi đã thấy các công tắc nút nhấn trong các lỗ vít được triển khai 'trên băng ghế' để phát hiện loại giả mạo mà bạn đang lo lắng. Sau đó .. đến đây, đứa trẻ với một ngọn đuốc siêu nhỏ butan quản lý để lấy chip của bạn mà không cần tháo bất cứ thứ gì (hoặc làm hỏng chip) .. bằng cách nào đó, anh ta biết thiết kế của hệ thống chống giả mạo của bạn (hy vọng) bao gồm cả việc phát hiện các thay đổi trong ánh sáng xung quanh và / hoặc âm thanh. Khi vỏ bọc tắt, cả hai trở nên khá khác nhau .. ngày hay đêm.
Nếu đó là trường hợp, nó phải là một hệ thống gồm hai phần trong đó các phần được phơi bày giao tiếp với một cái gì đó nơi mã hóa được thực hiện dễ dàng hơn. Thêm vào đó, tổng kiểm tra (trợ giúp) cho đứa trẻ với ngọn đuốc.
Tôi nghĩ rằng bạn đang yêu cầu một tuốc nơ vít là một cái búa.
Những ý kiến này là thực sự tại chỗ. Không có gì sai khi cố gắng thử nghiệm để tìm hiểu về mã hóa, nhưng đây thực sự không phải là một dự án tốt để học những thứ như vậy. Bạn thực sự muốn có một cuốn sách giáo khoa tốt và một máy tính, và như @bigiain nói, toán học nổi tiếng là dễ bị sai.
Để hiểu rõ hơn về cách mã hóa hoạt động và những gì bạn đang chống lại, Sổ tay Mật mã học ứng dụng là tuyệt vời và miễn phí:
Nếu bạn chỉ muốn bảo mật dự án của mình, đây là một cách làm không hiệu quả. Nếu bạn quan tâm đến mật mã, hãy bắt đầu với cuốn sách này và một máy tính.