Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
|
RSA Encryption -- Same Key Different Results
The RSA encryption algorithm produces different results for each call, even when encrypting the same data with the same key. Decryption however, will produce the correct results. This example demonstrates.
LOCAL loRsa LOCAL lnSuccess LOCAL lcPublicKey LOCAL lcPrivateKey LOCAL lcPlainText LOCAL lnUsePrivateKey LOCAL lcEncryptedStr1 LOCAL lcEncryptedStr2 LOCAL loRsa2 LOCAL lcDecryptedStr1 LOCAL lcDecryptedStr2 loRsa = CreateObject('Chilkat.Rsa') lnSuccess = loRsa.UnlockComponent("Anything for 30-day trial") IF (lnSuccess <> 1) THEN =MESSAGEBOX("RSA component unlock failed") QUIT ENDIF * RSA public key in XML format: lcPublicKey = "<RSAKeyValue><Modulus>xxyv1RDPU0MvfFIIa98HppXdcuI7zSu8uIqyGAy/VoxPvxZFX0acajznvjVRHipHbpcO6ryo2LwXUPf89qOqLb3Qd1lfD2ZnH+TQ6MZXNxfFRxTpTUd+tTR4EBYpd2t6kzq8ZRJYLdlviaMQQqUEwR54k7Op5HJYVKUcHIkP1xE=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>" lcPrivateKey = "<RSAKeyValue><Modulus>xxyv1RDPU0MvfFIIa98HppXdcuI7zSu8uIqyGAy/VoxPvxZFX0acajznvjVRHipHbpcO6ryo2LwXUPf89qOqLb3Qd1lfD2ZnH+TQ6MZXNxfFRxTpTUd+tTR4EBYpd2t6kzq8ZRJYLdlviaMQQqUEwR54k7Op5HJYVKUcHIkP1xE=</Modulus><Exponent>AQAB</Exponent><P>4cpW9fvG99Jsz8/AO7PDHTl+pPRAglksrR2kClLV2g9DEeFe/bvmCxLUgMCJ+0eGQ1zA6aA7McKr13zTQ7jKpQ==</P><Q>4cCS/kFlq/P1ExF37Fkh4pCodOEGutepLEG7Q/KljT3ZGlAY+2l8fGu4f+hrkUuGoFl7NOMaJflULoPIgQaq/Q==</Q><DP>lkjcSsvzqh3YKRXJiLNkyf3rypV8noYGU4+oEOsDxilkZfFRDafUPUiiQrRk4ui/d/SzvozU+ZDuWfaOk8PatQ==</DP><DQ>SYCD25i7W8Mwdibn3uIecEAdOQDTSh5RjIFSUYs9b8FFYJXXrHPp/jCsf6jS7RmkGa1Iui1/JAIL8KEjtS7QmQ==</DQ><InverseQ>EDAJa3TpNdPQ3GIdBpnTgFTQY5A60DcszsUW/iCYoXQdPVJ9BLBxVTe9jiLzGuNuzLkVBwQlCy0Bf84hACRV9A==</InverseQ><D>cMFdDYKkddlRNczaugOmOH8b1egpx2liSPs6GYZ2gFObAXJiPK8m+r6c2ckls7hrlUP0DZhi4cG6Tn7xANb0Ek17P7QquVhQYOmFy/YHzm+IJbcwwq7pJHhZBhtcjyXqfUZ+BADGE//GQbrSVwVltpOj5KcxG88NAprLn2MMxfE=</D></RSAKeyValue>" loRsa.ImportPublicKey(lcPublicKey) * Encrypt a string and return the encrypted data base64-encoded: loRsa.EncodingMode = "base64" lcPlainText = "RSA gives different results with each call, weird but OK" lnUsePrivateKey = 0 lcEncryptedStr1 = loRsa.EncryptStringENC(lcPlainText,lnUsePrivateKey) ? lcEncryptedStr1 * Do it again. The results are different... lcEncryptedStr2 = loRsa.EncryptStringENC(lcPlainText,lnUsePrivateKey) ? lcEncryptedStr2 * Now decrypt both strings, and the results are correct * in both cases: loRsa2 = CreateObject('Chilkat.Rsa') loRsa2.ImportPrivateKey(lcPrivateKey) loRsa2.EncodingMode = "base64" lnUsePrivateKey = 1 lcDecryptedStr1 = loRsa2.DecryptStringENC(lcEncryptedStr1,lnUsePrivateKey) ? lcDecryptedStr1 lcDecryptedStr2 = loRsa2.DecryptStringENC(lcEncryptedStr2,lnUsePrivateKey) ? lcDecryptedStr2 |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.
Mail Component · .NET Email Component · ASP Mail Component · XML Parser