diff --git a/MagickCore/cipher.c b/MagickCore/cipher.c
index 314e83a..ca8086b 100644
--- a/MagickCore/cipher.c
+++ b/MagickCore/cipher.c
@@ -613,7 +613,9 @@
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
}
- nonce=SplitStringInfo(key,GetStringInfoLength(key)/2);
+ SetAESKey(aes_info,key);
+ key=DestroyStringInfo(key);
+ nonce=AcquireStringInfo(0);
if (nonce == (StringInfo *) NULL)
{
key=DestroyStringInfo(key);
@@ -622,10 +624,7 @@
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
}
- SetAESKey(aes_info,key);
- key=DestroyStringInfo(key);
signature_info=AcquireSignatureInfo();
- UpdateSignature(signature_info,nonce);
SetStringInfoLength(nonce,sizeof(quantum_info->extent));
SetStringInfoDatum(nonce,(const unsigned char *) &quantum_info->extent);
UpdateSignature(signature_info,nonce);
@@ -814,7 +813,9 @@
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
}
- nonce=SplitStringInfo(key,GetStringInfoLength(key)/2);
+ SetAESKey(aes_info,key);
+ key=DestroyStringInfo(key);
+ nonce=AcquireStringInfo(0);
if (nonce == (StringInfo *) NULL)
{
key=DestroyStringInfo(key);
@@ -823,10 +824,7 @@
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
}
- SetAESKey(aes_info,key);
- key=DestroyStringInfo(key);
signature_info=AcquireSignatureInfo();
- UpdateSignature(signature_info,nonce);
SetStringInfoLength(nonce,sizeof(quantum_info->extent));
SetStringInfoDatum(nonce,(const unsigned char *) &quantum_info->extent);
UpdateSignature(signature_info,nonce);