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.
Dim fso, outFile Set fso = CreateObject("Scripting.FileSystemObject") Set outFile = fso.CreateTextFile("output.txt", True) set rsa = CreateObject("Chilkat.Rsa") success = rsa.UnlockComponent("Anything for 30-day trial") If (success <> 1) Then MsgBox "RSA component unlock failed" WScript.Quit End If ' RSA public key in XML format: publicKey = "<RSAKeyValue><Modulus>xxyv1RDPU0MvfFIIa98HppXdcuI7zSu8uIqyGAy/VoxPvxZFX0acajznvjVRHipHbpcO6ryo2LwXUPf89qOqLb3Qd1lfD2ZnH+TQ6MZXNxfFRxTpTUd+tTR4EBYpd2t6kzq8ZRJYLdlviaMQQqUEwR54k7Op5HJYVKUcHIkP1xE=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>" privateKey = "<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>" rsa.ImportPublicKey publicKey ' Encrypt a string and return the encrypted data base64-encoded: rsa.EncodingMode = "base64" plainText = "RSA gives different results with each call, weird but OK" usePrivateKey = 0 encryptedStr1 = rsa.EncryptStringENC(plainText,usePrivateKey) outFile.WriteLine(encryptedStr1) ' Do it again. The results are different... encryptedStr2 = rsa.EncryptStringENC(plainText,usePrivateKey) outFile.WriteLine(encryptedStr2) ' Now decrypt both strings, and the results are correct ' in both cases: set rsa2 = CreateObject("Chilkat.Rsa") rsa2.ImportPrivateKey privateKey rsa2.EncodingMode = "base64" usePrivateKey = 1 decryptedStr1 = rsa2.DecryptStringENC(encryptedStr1,usePrivateKey) outFile.WriteLine(decryptedStr1) decryptedStr2 = rsa2.DecryptStringENC(encryptedStr2,usePrivateKey) outFile.WriteLine(decryptedStr2) outFile.Close |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.