Charles V. Schaefer, Jr. School of Engineering and Science
SES Home » Algebraic Cryptography Center » Software


CRyptography And Groups (CRAG) C++ and Python Library

The Cryptography And Groups (CRAG) Library provides an environment to test cryptographic protocols constructed from non-commutative groups, for example the braid group. The Library is written in C++ and provides an interface and routines for computations. There are implementations of basic algebraic objects like words, maps and subgroups. We plan to continually expand the list of group-theoretic algorithms implemented in the library. In addition the Library will contain classes and routines implementing non-classical heuristic approaches and tools to perform statistical and exploratory analysis of algebraic data. Together with the C++ source code CRAG contains interface to Python scripting language.

Third party contributions and cooperation in the areas appropriate to the goals of the project are most welcome.


C++ library source code:

C++ library reference:

Previous versions


General information

CRAG FAQs page

CRAG C++ Library Reference

Copyright note

Copyright (C) 2004-2013 The Algebraic Cryptography Center at Stevens.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation (see

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; If you modify the source of the library we ask that you change the names of the modified classes/routines and comment the changes made to the original.


For any questions and/or suggestions please contact:

  • Alex Myasnikov:
  • Alexander Ushakov: