//新加授权程序
|
|
|
using System.Security.Cryptography;
|
|
namespace Common
|
{
|
public abstract class AlgHelper
|
{
|
public static byte[] Decrypt(string publicKey, byte[] data)
|
{
|
using (RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider())
|
{
|
cryptoServiceProvider.FromXmlString(publicKey);
|
return cryptoServiceProvider.Decrypt(data, false);
|
}
|
}
|
|
public static void GenerateKey(out string publicKey, out string privateKey)
|
{
|
using (RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider(1024))
|
{
|
privateKey = cryptoServiceProvider.ToXmlString(true);
|
publicKey = cryptoServiceProvider.ToXmlString(false);
|
}
|
}
|
|
public static byte[] Encrypt(string privateKey, byte[] data)
|
{
|
using (RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider())
|
{
|
cryptoServiceProvider.FromXmlString(privateKey);
|
return cryptoServiceProvider.Encrypt(data, false);
|
}
|
}
|
|
public static byte[] SignatureData(string privateKey, byte[] data)
|
{
|
using (RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider())
|
{
|
cryptoServiceProvider.FromXmlString(privateKey);
|
RSAPKCS1SignatureFormatter signatureFormatter = new RSAPKCS1SignatureFormatter((AsymmetricAlgorithm)cryptoServiceProvider);
|
signatureFormatter.SetHashAlgorithm("SHA1");
|
return signatureFormatter.CreateSignature(SHA1.Create().ComputeHash(data));
|
}
|
}
|
|
public static bool VerifySignature(string publicKey, byte[] rgbSignature, byte[] rgbToBeHash)
|
{
|
using (RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider())
|
{
|
cryptoServiceProvider.FromXmlString(publicKey);
|
RSAPKCS1SignatureDeformatter signatureDeformatter = new RSAPKCS1SignatureDeformatter((AsymmetricAlgorithm)cryptoServiceProvider);
|
signatureDeformatter.SetHashAlgorithm("SHA1");
|
return signatureDeformatter.VerifySignature(SHA1.Create().ComputeHash(rgbToBeHash), rgbSignature);
|
}
|
}
|
}
|
}
|