C# 在Xamarin共享项目中使用加密的正确方法

C# 在Xamarin共享项目中使用加密的正确方法,c#,encryption,xamarin,xamarin.forms,pcl-crypto,C#,Encryption,Xamarin,Xamarin.forms,Pcl Crypto,我目前正在开发一个Xamarin表单项目,我需要使用一些加密方法,这些方法通常可以通过namespace System.Security.Cryptography或CryptoServiceProvider获得。到目前为止,我一直在使用PCLCrypto nuget包来使用其他方法,如MD5哈希,但我还没有弄清楚如何专门使用RSA。我还想知道,如果直接在每个本机项目上实现这些方法,然后在共享项目上使用它们,而不是使用nuget,是否会更好 有什么想法吗?如果有人能给我指一些PCLCrypto的文

我目前正在开发一个Xamarin表单项目,我需要使用一些加密方法,这些方法通常可以通过namespace System.Security.Cryptography或CryptoServiceProvider获得。到目前为止,我一直在使用PCLCrypto nuget包来使用其他方法,如MD5哈希,但我还没有弄清楚如何专门使用RSA。我还想知道,如果直接在每个本机项目上实现这些方法,然后在共享项目上使用它们,而不是使用nuget,是否会更好


有什么想法吗?如果有人能给我指一些PCLCrypto的文档,这些文档相当于我所需要的,也可以,我只是需要一些关于这个问题的说明和一些澄清,因为我已经阅读了一些其他问题,但没有达成一致意见。

我不知道AES是否对您感兴趣,但也许您可以看看这个示例

byte[] keyMaterial;
byte[] data;
var provider = WinRTCrypto.SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithm.AesCbcPkcs7);
var key = provider.CreateSymmetricKey(keyMaterial);

// The IV may be null, but supplying a random IV increases security.
// The IV is not a secret like the key is.
// You can transmit the IV (w/o encryption) alongside the ciphertext.
var iv = WinRTCrypto.CryptographicBuffer.GenerateRandom(provider.BlockLength);

byte[] cipherText = WinRTCrypto.CryptographicEngine.Encrypt(key, data, iv);

// When decrypting, use the same IV that was passed to encrypt.
byte[] plainText = WinRTCrypto.CryptographicEngine.Decrypt(key, cipherText, iv);


也许此链接可以帮助您在Xamarin.Forms项目()上进行加密

,因为加密的Nuget包不支持PCL,您可能需要使用Xamarin.Forms DependencyService。您可以本机实现这些加密方法,只需通过DependencyService调用实际实现即可

  • 在PCL中创建一个接口(例如ICrypto)

  • 在该接口中创建一个方法,例如验证密码(例如boolpasswordvalid)

  • 将System.Security.Cryptography的Nuget包添加到本机项目中

  • 在本机代码中创建一个类,该类将实现该接口(例如Crypto_Android)并具有该方法的实现(例如bool PasswordValid)

  • 通过DependencyService从PCL调用此代码。语法如下所示:

  • bool valid=DependencyService.Get().PasswordValid(password)

    注意:有关实际加密的代码,您可以查看Tifa提供的PCLCrypto Github链接


    可以找到一个简单的DependencyService示例。

    检查此链接,看起来已经有答案了。谢谢,这将非常有用!我希望能找到一个能给我指出确切文件的人,因为它是缺乏的。至少,如果你想实现一些不同的东西,我不认为它是非常…好…总是要咨询堆栈溢出。但正如我说的,谢谢你!谢谢你的回答。正如我在问题中所描述的,我确实需要使用RSA。不过,我正在拿我以前在同一个地方找到的这个样本作为其他方法的指南,因为正如我提到的,没有任何其他关于RSA和其他一些方法的样本。这正是我所寻找的答案。在我看来,这是在PCL项目中使用加密的最佳方式。