I have posted some tentative ideas for a GSoC project to create a collection of functions to create and validate check digits at https://svn.boost.org/trac/boost/wiki/SoC2011 Previous discussions suggested that many people might find these useful. Some possible existing systems in wide user are : Simple modulo 256 etc check values and digits. http://en.wikipedia.org/wiki/Cyclic_redundancy_check http://www.boost.org/doc/libs/1_45_0/libs/crc/crc.html Boost's Cyclic redundancy checks codes http://www.boost.org/doc/libs/1_45_0/libs/crc/index.html http://www.netrino.com/Embedded-Systems/How-To/CRC-Calculation-C-Code crc_16_type BISYNCH, ARC crc_ccitt_type designated by CCITT (Comité Consultatif International Télégraphique et Téléphonique) crc_xmodem_type XMODEM crc_32_type PKZip, AUTODIN II, Ethernet, FDDI MD5 hash http://www.md5.net/ SHA hashes http://en.wikipedia.org/wiki/SHA-1 ... Luhn algorithm http://en.wikipedia.org/wiki/Luhn_algorithm Verhoeff algorithm http://en.wikipedia.org/wiki/Verhoeff_algorithm (These two are used by many of the others below). European Article numbering EAN Symbol Specification Manual, Universal Product Code, Uniform Code Council, Dayton, Ohio, USA. Version of check used by Mastercard, VISA, and most other credit card companies. http://www.beachnet.com/~hstiles/cardtype.html Generalised to arbitrary radix version allowing any characters (not just digits). Gene Callahan, Dr Dobb's Journal, Dec 1995, 131, 132 & 149. Generating Sequential keys in an Arbitrary Radix. IBAN International Banking format http://en.wikipedia.org/wiki/International_Bank_Account_Number http://en.wikipedia.org/wiki/Machine-readable_passport check digit US driving licence US Social security numbers Canadian Social Insurance Numbers UK National Insurance number ISBN http://en.wikipedia.org/wiki/International_Standard_Book_Number ISSN http://en.wikipedia.org/wiki/International_Standard_Serial_Number POSTNET http://en.wikipedia.org/wiki/POSTNET Bar codes http://www.dlsoft.com/services/CheckCalc/ http://en.wikipedia.org/wiki/Check_digit#Other_examples_of_check_digits Chemical abstracts http://en.wikipedia.org/wiki/CAS_registry_number Vehicle Id Number http://en.wikipedia.org/wiki/Vehicle_identification_number And there are no doubt many, many more. Suggestions? A question that Boost users/ developers/gurus might to comment on is the format these should take. Should it something naïve like bool ISBNcheck(string); // return true if is a full valid ISBN with correct decimal digit or X check digit. char ISBNcompute(string); // return the decimal digit or X check digit of the ISBN number passed. and similarly for the other check systems. or do we need something more complicated? String or Arrays of (unsigned?) bytes or? (Most of these examples *are* short strings). What return type? Efficiency is not like to be an issue for many of these? (Boost.crc handles this in a much more generic and complex package but handles some popular types. Some of its examples could be packaged simply as above.) Views? Paul --- Paul A. Bristow, Prizet Farmhouse, Kendal LA8 8AB UK +44 1539 561830 07714330204 pbristow@hetp.u-net.com