3

What are the most stable and useful Cryptography libraries, that they are:

  • written with/for python, c++, c#, .net
  • opensource, GNU, or other free license
sorush-r
  • 10,490
  • 17
  • 89
  • 173
  • See related questions for dupes including http://stackoverflow.com/questions/1343977/choosing-a-cryptography-library –  Mar 28 '10 at 13:12
  • You should also mention that the libraries must be downloadable from Iran, as many countries may block that (sorry, I don't know the details or where you might best download from, I'm just pointing out that you should edit the question to make this requirement explicit). – Alex Martelli Mar 28 '10 at 15:15
  • 6
    @Alex: As an example, which open source cryptography library can't be downloaded from Iran? –  Nov 10 '10 at 05:03

4 Answers4

3

The standard Python library (implementing common ciphers like AES and RSA) is PyCrypto. It doesn't support things like PKCS yet, however. There is a partial Python wrapper for the Crypto++ library given by PyCryptopp, which you may find useful.

The OpenSSL library is also wrapped for Python by PyOpenSSL. A Python implementation of SSH is Paramiko.

rlotun
  • 7,897
  • 4
  • 28
  • 23
  • [PyCrypto](https://www.pycrypto.org/) is no longer supported. [PyCryptoDome](https://pypi.org/project/pycryptodome/) is a fork of the original library and is considered a suitable replacement. – Jarrod Burns Feb 09 '23 at 14:49
2

For C# and Java, there is bouncycastle. The granddaddy of crypto libraries is openssl. For C++, another very mature library is crypto++.

President James K. Polk
  • 40,516
  • 21
  • 95
  • 125
1

Take a look at KeyCzar

Some features of Keyczar include:

  • A simple API
  • Key rotation and versioning
  • Safe default algorithms, modes, and key lengths
  • Automated generation of initialization vectors and ciphertext signatures
  • Java, Python, and C++ implementations
  • International support in Java (Python coming soon)

Doesn't seem to have C# support though.

matt b
  • 138,234
  • 66
  • 282
  • 345
  • @matt b: it's blocked for my country: You are accessing this page from a forbidden country. has a mirror? – sorush-r Mar 28 '10 at 13:13
  • that's blocked too:Your client does not have permission to get URL /p/keyczar/ from this server. try to access from Iran – sorush-r Mar 28 '10 at 13:48
0

NSS works with C++, and has bindings for Java and Python, although I'm not sure if it has .NET/Mono bindings yet.

Ignacio Vazquez-Abrams
  • 776,304
  • 153
  • 1,341
  • 1,358