From: TimLeung on 15 Feb 2010 05:42 I'm trying to use RSA encryption in the compact framework (v2.0) and hope that someone can help me. I've been working off the MSDN example which can be found here: http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspx In order to load key information, a method called FromXmlString is used. http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsa.fromxmlstring.aspx The problem I have is that FromXmlString isn't supported in the compact framework so I need some help in working out how to load the keys without the use of this method. I have pregenerated some keys and have saved them out using the ToXmlString method. The XML can be found below. Here's the code that I'm trying to use to encrypt the data. When I call the ImportParameters method, I get a "Bad Data" exception. Can someone work out what's wrong with this code or point me to to a working example? Thanks in advance, Tim string p, q, dp, dq, inverse, d, exponent, modulus, clearText; exponent = @"AQAB"; modulus = @"1fHlrCs61j0VAIVMsfTcJnF51tisdL+PXBqMt971M3CZOUZJhEyTdlgJoIv8FJif41wg646fS8O+ PoWz7lX3ioyN2AhkTtvEpude5zJGBXEAjOMErhag1ILQTNu+8vqF2hxgBd5pPk/fJOAa9+gM8Pf7 CebNPBSX4zLzzvPhsHU="; p = @"++HaZBLVTwRCsMDzvrhdXou73wzgsfa/OSVBsasJgcHIr2y9EvwgowdVXR7oc1/tLc5KpW8TMIi8 RpFvuvzmrQ=="; q = @"2XFF/B9pGdpSqmw+eSU1IHUaqQo6Sa9J2/F7dIs+/GMhC/TRZ5SHYLrfRrhEIGvIyG4CSeRTdChs tnHve3NR6Q=="; dp = @"FzDaPLCHNzk7Mq7xQjQTVKsk5wp2fawsOwS1IbiPrYS8B3rJhb/0+U2pjGNWH5lLaxY9RTIO4D8W pqCpWtwCGQ=="; dq = @"poREYAt95Tp4S+KRBR0lTjHftMwMTxlZqoGHVXy9Q3J2gD1/j58C/WSeT/4Uze8816DHR+b+sdmz RxSBnTx24Q=="; inverse = @"2VY9lcVhg1CJ+b1UjM5tOZ0dZqP6pIBVfhEXWLwnfOJyFc7CHqkUIBwtb4VqvCbhi8ZPG56yUXpw 7MYMX17R3w=="; d = @"J3OMy5vJJLpsxgTOqL4jXn9sXT7lRj4QvIY0zq8xfgPUbWhVpCzOwHLpi45ktJOUYEOb2nQZUcpN qY/UJy35EF/hVv6QBNJ7NF8qx1mpqxCO+9x2lLrT5nFcV3C9O9rlsU3hfriNtuFgMLicM8Fcqfnf Z08nS0FwRYQuyxwe8WE="; clearText = "this is the guid that i want to encrypt"; try { string cipherText = DoEncrypt(clearText, exponent, modulus, p, q, dp, dq, inverse, d); } catch (Exception ex) { MessageBox.Show(ex.Message ); } //Here's the DoEncrypt function public static string DoEncrypt(string cipherText, string Exponent, string Modulus, string p, string q, string dp, string dq, string inverse, string d) { string strRetval = ""; try { byte[] enecryptedData; UnicodeEncoding ByteConverter = new UnicodeEncoding(); RSACryptoServiceProvider rsaDoDecrypt = new RSACryptoServiceProvider(); RSAParameters rsaParamsPublic = new RSAParameters(); rsaParamsPublic.Exponent = ByteConverter.GetBytes(Exponent); rsaParamsPublic.Modulus = ByteConverter.GetBytes(Modulus); rsaParamsPublic.P = ByteConverter.GetBytes(p); rsaParamsPublic.Q = ByteConverter.GetBytes(q); rsaParamsPublic.DP = ByteConverter.GetBytes(dp); rsaParamsPublic.DQ = ByteConverter.GetBytes(dq); rsaParamsPublic.InverseQ = ByteConverter.GetBytes(inverse); rsaParamsPublic.D = ByteConverter.GetBytes(d); //the exception happens on the line below rsaDoDecrypt.ImportParameters(rsaParamsPublic); using (rsaDoDecrypt) { byte[] dataToEncrypt = ByteConverter.GetBytes(cipherText); enecryptedData = rsaDoDecrypt.Encrypt(dataToEncrypt, false); strRetval = ByteConverter.GetString(enecryptedData, 0, enecryptedData.Length); } } catch (ArgumentNullException) { Console.WriteLine("Encryption failed."); } return strRetval; } <?xml version="1.0"?> <RSAParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Exponent>AQAB</Exponent> <Modulus>1fHlrCs61j0VAIVMsfTcJnF51tisdL+PXBqMt971M3CZOUZJhEyTdlgJoIv8FJif41wg646fS8O+ PoWz7lX3ioyN2AhkTtvEpude5zJGBXEAjOMErhag1ILQTNu+8vqF2hxgBd5pPk/fJOAa9+gM8Pf7 CebNPBSX4zLzzvPhsHU=</Modulus> <P>++HaZBLVTwRCsMDzvrhdXou73wzgsfa/OSVBsasJgcHIr2y9EvwgowdVXR7oc1/tLc5KpW8TMIi8 RpFvuvzmrQ==</P> <Q>2XFF/B9pGdpSqmw+eSU1IHUaqQo6Sa9J2/F7dIs+/GMhC/TRZ5SHYLrfRrhEIGvIyG4CSeRTdChs tnHve3NR6Q==</Q> <DP>FzDaPLCHNzk7Mq7xQjQTVKsk5wp2fawsOwS1IbiPrYS8B3rJhb/0+U2pjGNWH5lLaxY9RTIO4D8W pqCpWtwCGQ==</DP> <DQ>poREYAt95Tp4S+KRBR0lTjHftMwMTxlZqoGHVXy9Q3J2gD1/j58C/WSeT/4Uze8816DHR+b+sdmz RxSBnTx24Q==</DQ> <InverseQ>2VY9lcVhg1CJ+b1UjM5tOZ0dZqP6pIBVfhEXWLwnfOJyFc7CHqkUIBwtb4VqvCbhi8ZPG56yUXpw 7MYMX17R3w==</InverseQ> <D>J3OMy5vJJLpsxgTOqL4jXn9sXT7lRj4QvIY0zq8xfgPUbWhVpCzOwHLpi45ktJOUYEOb2nQZUcpN qY/UJy35EF/hVv6QBNJ7NF8qx1mpqxCO+9x2lLrT5nFcV3C9O9rlsU3hfriNtuFgMLicM8Fcqfnf Z08nS0FwRYQuyxwe8WE=</D> </RSAParameters>
From: TimLeung on 15 Feb 2010 07:24 I think that I can answer my own question using the ImportCspBlob method. This method is supported in the compact framework and I think that I ought to be able to achieve what I want to do by using this approach instead. http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.importcspblob.aspx "TimLeung" wrote: > I'm trying to use RSA encryption in the compact framework (v2.0) and hope > that someone can help me. > > I've been working off the MSDN example which can be found here: > > http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspx > > In order to load key information, a method called FromXmlString is used. > > http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsa.fromxmlstring.aspx > > The problem I have is that FromXmlString isn't supported in the compact > framework so I need some help in working out how to load the keys without the > use of this method. > > I have pregenerated some keys and have saved them out using the ToXmlString > method. The XML can be found below. > > Here's the code that I'm trying to use to encrypt the data. When I call the > ImportParameters method, I get a "Bad Data" exception. Can someone work out > what's wrong with this code or point me to to a working example? > > Thanks in advance, > Tim > > > > string p, q, dp, dq, inverse, d, exponent, modulus, clearText; > > exponent = @"AQAB"; > modulus = > @"1fHlrCs61j0VAIVMsfTcJnF51tisdL+PXBqMt971M3CZOUZJhEyTdlgJoIv8FJif41wg646fS8O+ > PoWz7lX3ioyN2AhkTtvEpude5zJGBXEAjOMErhag1ILQTNu+8vqF2hxgBd5pPk/fJOAa9+gM8Pf7 > CebNPBSX4zLzzvPhsHU="; > p = > @"++HaZBLVTwRCsMDzvrhdXou73wzgsfa/OSVBsasJgcHIr2y9EvwgowdVXR7oc1/tLc5KpW8TMIi8 > RpFvuvzmrQ=="; > q = > @"2XFF/B9pGdpSqmw+eSU1IHUaqQo6Sa9J2/F7dIs+/GMhC/TRZ5SHYLrfRrhEIGvIyG4CSeRTdChs > tnHve3NR6Q=="; > dp = > @"FzDaPLCHNzk7Mq7xQjQTVKsk5wp2fawsOwS1IbiPrYS8B3rJhb/0+U2pjGNWH5lLaxY9RTIO4D8W > pqCpWtwCGQ=="; > dq = > @"poREYAt95Tp4S+KRBR0lTjHftMwMTxlZqoGHVXy9Q3J2gD1/j58C/WSeT/4Uze8816DHR+b+sdmz > RxSBnTx24Q=="; > inverse = > @"2VY9lcVhg1CJ+b1UjM5tOZ0dZqP6pIBVfhEXWLwnfOJyFc7CHqkUIBwtb4VqvCbhi8ZPG56yUXpw > 7MYMX17R3w=="; > d = > @"J3OMy5vJJLpsxgTOqL4jXn9sXT7lRj4QvIY0zq8xfgPUbWhVpCzOwHLpi45ktJOUYEOb2nQZUcpN > qY/UJy35EF/hVv6QBNJ7NF8qx1mpqxCO+9x2lLrT5nFcV3C9O9rlsU3hfriNtuFgMLicM8Fcqfnf > Z08nS0FwRYQuyxwe8WE="; > > clearText = "this is the guid that i want to encrypt"; > > try > { > string cipherText = DoEncrypt(clearText, exponent, modulus, > p, q, dp, dq, inverse, d); > } > catch (Exception ex) > { > MessageBox.Show(ex.Message ); > } > > > //Here's the DoEncrypt function > > public static string DoEncrypt(string cipherText, string Exponent, > string Modulus, string p, string q, string dp, string dq, string inverse, > string d) > { > > string strRetval = ""; > try > { > > byte[] enecryptedData; > > UnicodeEncoding ByteConverter = new UnicodeEncoding(); > > RSACryptoServiceProvider rsaDoDecrypt = new > RSACryptoServiceProvider(); > RSAParameters rsaParamsPublic = new RSAParameters(); > > rsaParamsPublic.Exponent = ByteConverter.GetBytes(Exponent); > rsaParamsPublic.Modulus = ByteConverter.GetBytes(Modulus); > rsaParamsPublic.P = ByteConverter.GetBytes(p); > rsaParamsPublic.Q = ByteConverter.GetBytes(q); > rsaParamsPublic.DP = ByteConverter.GetBytes(dp); > rsaParamsPublic.DQ = ByteConverter.GetBytes(dq); > rsaParamsPublic.InverseQ = ByteConverter.GetBytes(inverse); > rsaParamsPublic.D = ByteConverter.GetBytes(d); > > //the exception happens on the line below > rsaDoDecrypt.ImportParameters(rsaParamsPublic); > > using (rsaDoDecrypt) > { > byte[] dataToEncrypt = ByteConverter.GetBytes(cipherText); > enecryptedData = rsaDoDecrypt.Encrypt(dataToEncrypt, > false); > strRetval = ByteConverter.GetString(enecryptedData, 0, > enecryptedData.Length); > } > } > catch (ArgumentNullException) > { > Console.WriteLine("Encryption failed."); > } > > return strRetval; > } > > > > > > <?xml version="1.0"?> > <RSAParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > <Exponent>AQAB</Exponent> > > <Modulus>1fHlrCs61j0VAIVMsfTcJnF51tisdL+PXBqMt971M3CZOUZJhEyTdlgJoIv8FJif41wg646fS8O+ > PoWz7lX3ioyN2AhkTtvEpude5zJGBXEAjOMErhag1ILQTNu+8vqF2hxgBd5pPk/fJOAa9+gM8Pf7 > CebNPBSX4zLzzvPhsHU=</Modulus> > > <P>++HaZBLVTwRCsMDzvrhdXou73wzgsfa/OSVBsasJgcHIr2y9EvwgowdVXR7oc1/tLc5KpW8TMIi8 > RpFvuvzmrQ==</P> > > <Q>2XFF/B9pGdpSqmw+eSU1IHUaqQo6Sa9J2/F7dIs+/GMhC/TRZ5SHYLrfRrhEIGvIyG4CSeRTdChs > tnHve3NR6Q==</Q> > > <DP>FzDaPLCHNzk7Mq7xQjQTVKsk5wp2fawsOwS1IbiPrYS8B3rJhb/0+U2pjGNWH5lLaxY9RTIO4D8W > pqCpWtwCGQ==</DP> > > <DQ>poREYAt95Tp4S+KRBR0lTjHftMwMTxlZqoGHVXy9Q3J2gD1/j58C/WSeT/4Uze8816DHR+b+sdmz > RxSBnTx24Q==</DQ> > > <InverseQ>2VY9lcVhg1CJ+b1UjM5tOZ0dZqP6pIBVfhEXWLwnfOJyFc7CHqkUIBwtb4VqvCbhi8ZPG56yUXpw > 7MYMX17R3w==</InverseQ> > > <D>J3OMy5vJJLpsxgTOqL4jXn9sXT7lRj4QvIY0zq8xfgPUbWhVpCzOwHLpi45ktJOUYEOb2nQZUcpN > qY/UJy35EF/hVv6QBNJ7NF8qx1mpqxCO+9x2lLrT5nFcV3C9O9rlsU3hfriNtuFgMLicM8Fcqfnf > Z08nS0FwRYQuyxwe8WE=</D> > </RSAParameters> > > > > > > > > > > > > > > > > > > > >
From: Simon Hart [MVP] on 20 Feb 2010 20:56 What is it you are trying to do? I haven't read your code in depth to understand what you're doing. Why are you serializing a key? -- Simon Hart Visual Developer - Device Application Development MVP http://www.simonrhart.com "TimLeung" wrote: > I think that I can answer my own question using the ImportCspBlob method. > > This method is supported in the compact framework and I think that I ought > to be able to achieve what I want to do by using this approach instead. > > http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.importcspblob.aspx > > > > "TimLeung" wrote: > > > I'm trying to use RSA encryption in the compact framework (v2.0) and hope > > that someone can help me. > > > > I've been working off the MSDN example which can be found here: > > > > http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspx > > > > In order to load key information, a method called FromXmlString is used. > > > > http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsa.fromxmlstring.aspx > > > > The problem I have is that FromXmlString isn't supported in the compact > > framework so I need some help in working out how to load the keys without the > > use of this method. > > > > I have pregenerated some keys and have saved them out using the ToXmlString > > method. The XML can be found below. > > > > Here's the code that I'm trying to use to encrypt the data. When I call the > > ImportParameters method, I get a "Bad Data" exception. Can someone work out > > what's wrong with this code or point me to to a working example? > > > > Thanks in advance, > > Tim > > > > > > > > string p, q, dp, dq, inverse, d, exponent, modulus, clearText; > > > > exponent = @"AQAB"; > > modulus = > > @"1fHlrCs61j0VAIVMsfTcJnF51tisdL+PXBqMt971M3CZOUZJhEyTdlgJoIv8FJif41wg646fS8O+ > > PoWz7lX3ioyN2AhkTtvEpude5zJGBXEAjOMErhag1ILQTNu+8vqF2hxgBd5pPk/fJOAa9+gM8Pf7 > > CebNPBSX4zLzzvPhsHU="; > > p = > > @"++HaZBLVTwRCsMDzvrhdXou73wzgsfa/OSVBsasJgcHIr2y9EvwgowdVXR7oc1/tLc5KpW8TMIi8 > > RpFvuvzmrQ=="; > > q = > > @"2XFF/B9pGdpSqmw+eSU1IHUaqQo6Sa9J2/F7dIs+/GMhC/TRZ5SHYLrfRrhEIGvIyG4CSeRTdChs > > tnHve3NR6Q=="; > > dp = > > @"FzDaPLCHNzk7Mq7xQjQTVKsk5wp2fawsOwS1IbiPrYS8B3rJhb/0+U2pjGNWH5lLaxY9RTIO4D8W > > pqCpWtwCGQ=="; > > dq = > > @"poREYAt95Tp4S+KRBR0lTjHftMwMTxlZqoGHVXy9Q3J2gD1/j58C/WSeT/4Uze8816DHR+b+sdmz > > RxSBnTx24Q=="; > > inverse = > > @"2VY9lcVhg1CJ+b1UjM5tOZ0dZqP6pIBVfhEXWLwnfOJyFc7CHqkUIBwtb4VqvCbhi8ZPG56yUXpw > > 7MYMX17R3w=="; > > d = > > @"J3OMy5vJJLpsxgTOqL4jXn9sXT7lRj4QvIY0zq8xfgPUbWhVpCzOwHLpi45ktJOUYEOb2nQZUcpN > > qY/UJy35EF/hVv6QBNJ7NF8qx1mpqxCO+9x2lLrT5nFcV3C9O9rlsU3hfriNtuFgMLicM8Fcqfnf > > Z08nS0FwRYQuyxwe8WE="; > > > > clearText = "this is the guid that i want to encrypt"; > > > > try > > { > > string cipherText = DoEncrypt(clearText, exponent, modulus, > > p, q, dp, dq, inverse, d); > > } > > catch (Exception ex) > > { > > MessageBox.Show(ex.Message ); > > } > > > > > > //Here's the DoEncrypt function > > > > public static string DoEncrypt(string cipherText, string Exponent, > > string Modulus, string p, string q, string dp, string dq, string inverse, > > string d) > > { > > > > string strRetval = ""; > > try > > { > > > > byte[] enecryptedData; > > > > UnicodeEncoding ByteConverter = new UnicodeEncoding(); > > > > RSACryptoServiceProvider rsaDoDecrypt = new > > RSACryptoServiceProvider(); > > RSAParameters rsaParamsPublic = new RSAParameters(); > > > > rsaParamsPublic.Exponent = ByteConverter.GetBytes(Exponent); > > rsaParamsPublic.Modulus = ByteConverter.GetBytes(Modulus); > > rsaParamsPublic.P = ByteConverter.GetBytes(p); > > rsaParamsPublic.Q = ByteConverter.GetBytes(q); > > rsaParamsPublic.DP = ByteConverter.GetBytes(dp); > > rsaParamsPublic.DQ = ByteConverter.GetBytes(dq); > > rsaParamsPublic.InverseQ = ByteConverter.GetBytes(inverse); > > rsaParamsPublic.D = ByteConverter.GetBytes(d); > > > > //the exception happens on the line below > > rsaDoDecrypt.ImportParameters(rsaParamsPublic); > > > > using (rsaDoDecrypt) > > { > > byte[] dataToEncrypt = ByteConverter.GetBytes(cipherText); > > enecryptedData = rsaDoDecrypt.Encrypt(dataToEncrypt, > > false); > > strRetval = ByteConverter.GetString(enecryptedData, 0, > > enecryptedData.Length); > > } > > } > > catch (ArgumentNullException) > > { > > Console.WriteLine("Encryption failed."); > > } > > > > return strRetval; > > } > > > > > > > > > > > > <?xml version="1.0"?> > > <RSAParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > > <Exponent>AQAB</Exponent> > > > > <Modulus>1fHlrCs61j0VAIVMsfTcJnF51tisdL+PXBqMt971M3CZOUZJhEyTdlgJoIv8FJif41wg646fS8O+ > > PoWz7lX3ioyN2AhkTtvEpude5zJGBXEAjOMErhag1ILQTNu+8vqF2hxgBd5pPk/fJOAa9+gM8Pf7 > > CebNPBSX4zLzzvPhsHU=</Modulus> > > > > <P>++HaZBLVTwRCsMDzvrhdXou73wzgsfa/OSVBsasJgcHIr2y9EvwgowdVXR7oc1/tLc5KpW8TMIi8 > > RpFvuvzmrQ==</P> > > > > <Q>2XFF/B9pGdpSqmw+eSU1IHUaqQo6Sa9J2/F7dIs+/GMhC/TRZ5SHYLrfRrhEIGvIyG4CSeRTdChs > > tnHve3NR6Q==</Q> > > > > <DP>FzDaPLCHNzk7Mq7xQjQTVKsk5wp2fawsOwS1IbiPrYS8B3rJhb/0+U2pjGNWH5lLaxY9RTIO4D8W > > pqCpWtwCGQ==</DP> > > > > <DQ>poREYAt95Tp4S+KRBR0lTjHftMwMTxlZqoGHVXy9Q3J2gD1/j58C/WSeT/4Uze8816DHR+b+sdmz > > RxSBnTx24Q==</DQ> > > > > <InverseQ>2VY9lcVhg1CJ+b1UjM5tOZ0dZqP6pIBVfhEXWLwnfOJyFc7CHqkUIBwtb4VqvCbhi8ZPG56yUXpw > > 7MYMX17R3w==</InverseQ> > > > > <D>J3OMy5vJJLpsxgTOqL4jXn9sXT7lRj4QvIY0zq8xfgPUbWhVpCzOwHLpi45ktJOUYEOb2nQZUcpN > > qY/UJy35EF/hVv6QBNJ7NF8qx1mpqxCO+9x2lLrT5nFcV3C9O9rlsU3hfriNtuFgMLicM8Fcqfnf > > Z08nS0FwRYQuyxwe8WE=</D> > > </RSAParameters> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
|
Pages: 1 Prev: Nativewindows Next: verify signature from cab using RSACryptoServiceProvider ? |