//新加授权程序 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); } } } }