diff options
author | Walter Purcaro <vuolter@users.noreply.github.com> | 2015-04-13 16:05:04 +0200 |
---|---|---|
committer | Walter Purcaro <vuolter@users.noreply.github.com> | 2015-04-13 16:05:04 +0200 |
commit | 99ec1c400d79ecc41ae1745e794e21e2e79d2add (patch) | |
tree | a20349bc3e5a1b20e0c8184f5aeb2f7c43a43194 /lib/Python/Lib/beaker/crypto/jcecrypto.py | |
parent | Merge branch 'stable' into 0.4.10 (diff) | |
download | pyload-99ec1c400d79ecc41ae1745e794e21e2e79d2add.tar.xz |
Move lib to lib/Python/Lib
Diffstat (limited to 'lib/Python/Lib/beaker/crypto/jcecrypto.py')
-rw-r--r-- | lib/Python/Lib/beaker/crypto/jcecrypto.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/Python/Lib/beaker/crypto/jcecrypto.py b/lib/Python/Lib/beaker/crypto/jcecrypto.py new file mode 100644 index 000000000..4062d513e --- /dev/null +++ b/lib/Python/Lib/beaker/crypto/jcecrypto.py @@ -0,0 +1,30 @@ +""" +Encryption module that uses the Java Cryptography Extensions (JCE). + +Note that in default installations of the Java Runtime Environment, the +maximum key length is limited to 128 bits due to US export +restrictions. This makes the generated keys incompatible with the ones +generated by pycryptopp, which has no such restrictions. To fix this, +download the "Unlimited Strength Jurisdiction Policy Files" from Sun, +which will allow encryption using 256 bit AES keys. +""" +from javax.crypto import Cipher +from javax.crypto.spec import SecretKeySpec, IvParameterSpec + +import jarray + +# Initialization vector filled with zeros +_iv = IvParameterSpec(jarray.zeros(16, 'b')) + +def aesEncrypt(data, key): + cipher = Cipher.getInstance('AES/CTR/NoPadding') + skeySpec = SecretKeySpec(key, 'AES') + cipher.init(Cipher.ENCRYPT_MODE, skeySpec, _iv) + return cipher.doFinal(data).tostring() + +# magic. +aesDecrypt = aesEncrypt + +def getKeyLength(): + maxlen = Cipher.getMaxAllowedKeyLength('AES/CTR/NoPadding') + return min(maxlen, 256) / 8 |