繁体   English   中英

Windows Phone API:使用RSACryptoServiceProvider签名数据

[英]Windows Phone API: using RSACryptoServiceProvider to sign data

我的问题是:如何使用.Net for Windows Phone签署数据,托管语言是C#

我使用RSACryptoServiceProvider生成一个私有/公共密钥对,然后我想使用“ SHA256Managed”哈希算法对具有私有密钥的数据进行签名,我所做的是:

string DataTobeEncrypt = "upupdowndownleftleftrightrightABstart";
CspParameter cspParams = new CspParameters();
cspParams = new CspParameters();
cspParams.ProviderType = 1; // PROV_RSA_FULL
cspParams.Flags = CspProviderFlags.UseArchivableKey;
cspParams.KeyNumber = (int)KeyNumber.Exchange;
RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(2048,cspParams);
byte[] plainBytes = Encoding.Unicode.GetBytes(DataTobeEncrypt);
byte[] signedBytes = rsaProvider.SignHash(plainBytes, new SHA256Managed());

执行,但出现异常:mscorlib.ni.dll中发生了'System.Security.Cryptography.CryptographicException'类型的异常,在指定了托管/本机边界无效算法之前未进行处理。

然后将算法切换为SHA1或MD5,仍然出现相同的错误,然后我尝试了:

SHA256Managed hashAlgorithm = new SHA256Managed();
byte[] hashedBytes = hashAlgorithm.ComputeHash(plainBytes);
signedBytes = rsaProvider.SighHash(hashedBytes, "1.2.840.113548.1.1.11");

然后我得到异常:mscorlib.ni.dll对象引用未设置为对象实例的情况下发生了'System.NullReferenceException'类型的第一次机会异常。

然后我使用rsaProvider放弃,并转到AsymmetricSignatureFormatter,我所做的是:

AsymmetricSignatureFormatter formatter = new RSAPKCS1SignatureFormatter();
formatter.SetHashAlgorithm("SHA256");
formatter.SetKey(rsaProvider);
signedBytes = formatter(plainBytes);

但它仍然失败,我得到的是:类型为“ System.Security.Cryptography.CryptographicException”类型的首次机会异常发生在mscorlib.ni.dll中,并且在指定托管/本地边界无效算法之前未进行处理。

我搜索了很多线程,但没有找到Windows Phone平台的任何特定示例,有人可以帮助我吗?

他们的网页声称他们已经在Windows Phone 7中成功使用了它。它甚至与RSACryptoServiceProvider兼容。 http://www.dustinhorne.com/post/Asymmetric-Encryption-and-Signing-with-RSA-in-Silverlight.aspx

这个问题似乎是,发现符号(.PDB),源代码和二进制Files.I希望这将有助于使编译器设置http://msdn.microsoft.com/en-us/library/ms241613.aspx#BKMK_Specifying_symbol_locations_and_loading_behavior

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM