예제 #1
0
    def test08(self):
        print 'test08-------------------------'
        # en--
        key = 'Call me Ishmael.'[:16]
        key = map(ord, key)
        data = 'This is not a block length.'
        mode = aes.AESModeOfOperation.modeOfOperation["CBC"]

        if mode == aes.AESModeOfOperation.modeOfOperation["CBC"]:
            data = aes.append_PKCS7_padding(data)
        keysize = len(key)
        assert keysize in aes.AES.keySize.values(
        ), 'invalid key size: %s' % keysize
        # create a new iv using random data
        iv = [12, 34, 96, 15, 12, 34, 96, 15, 12, 34, 96, 15, 12, 34, 96, 15]
        moo = aes.AESModeOfOperation()
        (mode, length, ciph) = moo.encrypt(data, mode, key, keysize, iv)
        # With padding, the original length does not need to be known. It's a bad
        # idea to store the original message length.
        # prepend the iv.
        encrypt_data = ciph
        print aes.decryptDataIv(key, ciph, iv)

        keysize = len(key)
        assert keysize in aes.AES.keySize.values(
        ), 'invalid key size: %s' % keysize
        # iv is first 16 bytes
        #iv = map(ord, encrypt_data[:16])

        moo = aes.AESModeOfOperation()
        decr = moo.decrypt(encrypt_data, None, mode, key, keysize, iv)
        if mode == aes.AESModeOfOperation.modeOfOperation["CBC"]:
            decr = aes.strip_PKCS7_padding(decr)
        print decr
예제 #2
0
  def test08(self):
    print 'test08-------------------------'
    # en--
    key = 'Call me Ishmael.'[:16]
    key = map(ord, key)
    data = 'This is not a block length.'
    mode = aes.AESModeOfOperation.modeOfOperation["CBC"]


    if mode == aes.AESModeOfOperation.modeOfOperation["CBC"]:
        data = aes.append_PKCS7_padding(data)
    keysize = len(key)
    assert keysize in aes.AES.keySize.values(), 'invalid key size: %s' % keysize
    # create a new iv using random data
    iv = [12, 34, 96, 15, 12, 34, 96, 15, 12, 34, 96, 15, 12, 34, 96, 15]
    moo = aes.AESModeOfOperation()
    (mode, length, ciph) = moo.encrypt(data, mode, key, keysize, iv)
    # With padding, the original length does not need to be known. It's a bad
    # idea to store the original message length.
    # prepend the iv.
    encrypt_data = ciph
    print aes.decryptDataIv(key, ciph, iv)


    keysize = len(key)
    assert keysize in aes.AES.keySize.values(), 'invalid key size: %s' % keysize
    # iv is first 16 bytes
    #iv = map(ord, encrypt_data[:16])

    moo = aes.AESModeOfOperation()
    decr = moo.decrypt(encrypt_data, None, mode, key, keysize, iv)
    if mode == aes.AESModeOfOperation.modeOfOperation["CBC"]:
        decr = aes.strip_PKCS7_padding(decr)
    print decr
예제 #3
0
	def decrypt(self, key, param, data):
		key = map(ord, key)
		keysize = len(key)
		iv = map(ord, param[:16])
		data = map(ord, data)
		moo = aes.AESModeOfOperation()
		mode = aes.AESModeOfOperation.modeOfOperation["CBC"]
		decr = moo.decrypt(data, None, mode, key, keysize, iv)
		return aes.strip_PKCS7_padding(decr)
예제 #4
0
 def decrypt(self, key, param, data):
     key = map(ord, key)
     keysize = len(key)
     iv = map(ord, param[:16])
     data = map(ord, data)
     moo = aes.AESModeOfOperation()
     mode = aes.AESModeOfOperation.modeOfOperation["CBC"]
     decr = moo.decrypt(data, None, mode, key, keysize, iv)
     return aes.strip_PKCS7_padding(decr)
예제 #5
0
	def decryptRequest(self, request):
		encrypted = bytearray(str(request['message']))
		iv = bytearray(request['message']['salt'])

		moo = aes.AESModeOfOperation()
		moo.aes.v6 = self.v6
		decrypted = moo.decrypt(encrypted, 256, moo.modeOfOperation["CBC"], self.key, moo.aes.keySize["SIZE_128"], iv)
		decrypted = aes.strip_PKCS7_padding(decrypted)

		return self.DecryptedRequest(decrypted)
예제 #6
0
        def decryptRequest(self, request):
                encrypted = bytearray(str(request['message']).encode('latin-1')) #*2to3*
                iv = bytearray(request['message']['salt'].encode('latin-1')) #*2to3*
                moo = aes.AESModeOfOperation()
                moo.aes.v6 = self.v6
                decrypted = moo.decrypt(encrypted, 256, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], iv) #*2to3*
                decrypted = aes.strip_PKCS7_padding(decrypted)
                decrypted = bytes(decrypted) #*2to3*

                return self.DecryptedRequest(decrypted)
예제 #7
0
        def decryptRequest(self, request):
                encrypted = bytearray(str(request['message']))
                iv = bytearray(request['message']['salt'])

                moo = aes.AESModeOfOperation()
                moo.aes.v6 = self.v6
                decrypted = moo.decrypt(encrypted, 256, moo.modeOfOperation["CBC"], self.key, moo.aes.keySize["SIZE_128"], iv)
                decrypted = aes.strip_PKCS7_padding(decrypted)

                return self.DecryptedRequest(decrypted)
예제 #8
0
        def decryptResponse(self, response):
                paddingLength = response['bodyLength1'] % 8
                iv = bytearray(response['salt'])
                encrypted = bytearray(response['encrypted'][:-paddingLength])
                moo = aes.AESModeOfOperation()
                moo.aes.v6 = self.v6
                decrypted = moo.decrypt(encrypted, 256, moo.modeOfOperation["CBC"], self.key, moo.aes.keySize["SIZE_128"], iv)
                decrypted = aes.strip_PKCS7_padding(decrypted)

                return self.DecryptedResponse(decrypted)
예제 #9
0
        def decryptResponse(self, response):
                paddingLength = response['bodyLength1'] % 8
                iv = bytearray(response['salt'].encode('latin-1')) #*2to3*
                encrypted = bytearray(response['encrypted'][:-paddingLength].encode('latin-1')) #*2to3*
                moo = aes.AESModeOfOperation()
                moo.aes.v6 = self.v6
                decrypted = moo.decrypt(encrypted, 256, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], iv) #*2to3*
                decrypted = aes.strip_PKCS7_padding(decrypted)
                decrypted = bytes(decrypted) #*2to3*

                return self.DecryptedResponse(decrypted)
예제 #10
0
    def decryptRequest(self, request):
        encrypted = bytearray(str(
            request['message']).encode('latin-1'))  #*2to3*
        iv = bytearray(request['message']['salt'].encode('latin-1'))  #*2to3*
        moo = aes.AESModeOfOperation()
        moo.aes.v6 = self.v6
        decrypted = moo.decrypt(encrypted, 256, moo.ModeOfOperation["CBC"],
                                self.key, moo.aes.KeySize["SIZE_128"],
                                iv)  #*2to3*
        decrypted = aes.strip_PKCS7_padding(decrypted)
        decrypted = bytes(decrypted)  #*2to3*

        return self.DecryptedRequest(decrypted)
예제 #11
0
    def decryptResponse(self, response):
        paddingLength = response['bodyLength1'] % 8
        iv = bytearray(response['salt'].encode('latin-1'))  #*2to3*
        encrypted = bytearray(
            response['encrypted'][:-paddingLength].encode('latin-1'))  #*2to3*
        moo = aes.AESModeOfOperation()
        moo.aes.v6 = self.v6
        decrypted = moo.decrypt(encrypted, 256, moo.ModeOfOperation["CBC"],
                                self.key, moo.aes.KeySize["SIZE_128"],
                                iv)  #*2to3*
        decrypted = aes.strip_PKCS7_padding(decrypted)
        decrypted = bytes(decrypted)  #*2to3*

        return self.DecryptedResponse(decrypted)
예제 #12
0
def decrypt(ciphertext, key):
    iv = ciphertext[:AES.block_size]
    cipher = AES.new(key, AES.MODE_CBC, iv)
    plaintext = cipher.decrypt(ciphertext[AES.block_size:])
    plaintext = aes.strip_PKCS7_padding(plaintext)
    return plaintext.rstrip(b"\x07")