gog*_*ole 7 c# rsa rsacryptoserviceprovider
我目前正在尝试使用RSACrytoServiceProveider类实现一个类来处理我的应用程序实例之间的安全通信.第一个问题:实现单个类来处理发送者/接收者角色或者我应该将角色分成单个类是一个好主意吗?这是我到目前为止所做的:
using System;
using System.Text;
using System.Security.Cryptography;
namespace Agnus.Cipher
{
public class RSA
{
private byte[] plaintextBytes;
private byte[] ciphertextBytes;
private RSACryptoServiceProvider rSAProviderThis;
private RSACryptoServiceProvider rSAProviderOther;
public string PublicKey
{
get { return rSAProviderThis.ToXmlString(false); }
}
public RSA()
{
rSAProviderThis = new RSACryptoServiceProvider { PersistKeyInCsp = true };
plaintextBytes = Encoding.Unicode.GetBytes(PublicKey);
}
public void InitializeRSAProviderOther(string parameters)
{
rSAProviderOther.FromXmlString(parameters);
}
public byte[] Encrypt()
{
return rSAProviderThis.Encrypt(plaintextBytes, true);
}
public byte[] Decrypt()
{
return rSAProviderThis.Decrypt(ciphertextBytes, true);
}
public byte[] Sign()
{
using (SHA1Managed SHA1 = new SHA1Managed())
{
byte[] hash = SHA1.ComputeHash(ciphertextBytes);
byte[] signature = rSAProviderThis.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
return signature;
}
}
public void Verify()
{
throw new NotImplementedException();
}
}
}
Run Code Online (Sandbox Code Playgroud)
第二个问题:我如何发送和接收要输入课程的数据?我是这个领域的绿色角,指针将不胜感激.
我会让加密/签名/解密/验证方法采用数据参数,而不是为其提供成员变量。不过,拥有密钥和提供者的成员变量似乎没问题。基本上我希望多次使用相同的密钥但不使用相同的数据。
我还将其设置为不可变 - 将所有变量设置为只读,在构造函数中获取提供程序所需的所有参数,而不是使用单独的初始化方法。
除此之外,将功能包装在一个更简单的 API 中以满足您的需求似乎是可以的,是的。
| 归档时间: |
|
| 查看次数: |
26024 次 |
| 最近记录: |