2012-06-27 15 views
5

tôi cần chọn thuật toán kiểm tra để phát hiện khi người dùng nhập sai mã 4 ký tự [A-Z0-9] bằng cách thêm 1 ký tự ở cuối mã (trong [A -Z0-9] cũng).Chọn kiểm tra mã ngắn để ngăn lỗi nhập

Tổng hợp mã ASCII và áp dụng modulo là một giải pháp tồi, vì việc đảo ngược 2 nét chính sẽ không được chú ý.

Tôi có thể sử dụng thuật toán Fletcher, nhưng tôi muốn biết có ai biết thuật toán được thiết kế cho trường hợp sử dụng này (số lượng byte rất nhỏ, phụ thuộc vào vị trí) không?

Cảm ơn bạn.

+0

thể trùng lặp của [Lựa chọn tốt cho một thuật toán checksum nhẹ?] (http://stackoverflow.com/questions/421419/good-choice-for-a-lightweight-checksum -algorithm) – Joey

+0

Bài đăng bạn đã liên kết i s về việc tạo ra một tổng kiểm tra cho một đoạn dữ liệu dài được tạo ra bởi một máy tính. Ở đây, người đăng ký yêu cầu một ký tự/chữ số xác minh duy nhất, hữu ích cho đầu vào của con người (một họ kiểm tra khác biệt). –

Trả lời

8

Bạn có thể thử các thuật toán ISO 7064 Mod x, y. Theo mô tả ISO:

hệ thống nhân vật

Vui lòng cung quy định tại tiêu chuẩn ISO/IEC 7064: 2002 có thể phát hiện (http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=31531):

  • tất cả các lỗi thay duy nhất (việc thay thế một nhân vật duy nhất cho khác, ví dụ 4234 cho 1234);
  • tất cả hoặc gần như tất cả các lỗi chuyển vị đơn (cục bộ) (chuyển vị của hai ký tự đơn lẻ, liền kề hoặc với một ký tự giữa chúng, ví dụ 12354 hoặc 12543 cho 12345);
  • tất cả hoặc gần như tất cả các lỗi thay đổi (thay đổi của toàn bộ chuỗi sang trái hoặc sang phải);
  • tỷ lệ lỗi thay thế kép cao (hai lỗi thay thế đơn lẻ riêng biệt trong cùng một chuỗi, ví dụ 7234587 cho 1234567);
  • tỷ lệ cao của tất cả các lỗi khác.

Có một số việc triển khai một phần, bạn có thể tìm thấy như:

Ví dụ: bạn có thể sử dụng ISO 7064 Mod 37,36, có thể sử dụng 0-9 và A-Z (dữ liệu và ký tự kiểm tra). Mô tả chi tiết của thuật toán (nếu bạn không cảm thấy như mua ISO) có thể được tìm thấy trong:

+0

Bạn, thưa bạn, đã làm cho ngày của tôi! Cảm ơn, có vẻ như nó hoàn toàn phù hợp với vấn đề của tôi. –