当前位置: 首页>>代码示例>>C#>>正文


C# RSACryptoServiceProvider.SignHash方法代码示例

本文整理汇总了C#中System.Security.Cryptography.RSACryptoServiceProvider.SignHash方法的典型用法代码示例。如果您正苦于以下问题:C# RSACryptoServiceProvider.SignHash方法的具体用法?C# RSACryptoServiceProvider.SignHash怎么用?C# RSACryptoServiceProvider.SignHash使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Security.Cryptography.RSACryptoServiceProvider的用法示例。


在下文中一共展示了RSACryptoServiceProvider.SignHash方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Sign

        private void Sign(string filename)
        {
            try
            {
                string p = @"<RSAKeyValue><Modulus>wJqUfZ3Iry4fV6p1bjO817u2/HE1zCmsnguE0Of+1Dzzcc+L3psx1PsDmXlxcLU9E4+ndbIacC2XMWlrIaLSikIJgfMwuvBej18HrrNATpKHwprUpRMU3P9ug5iemz0pyHA3Nr+keCU/b/HsFmido6R1cuBSDd6RYtlK1Xx+KlU=</Modulus><Exponent>AQAB</Exponent><P>+37HaPakQZN5GKh7Jf8a4b/3kqHIynsd0CYVNN0ax3qqRneEdyhfC2CzJGjv6UPOyAXZHn/T8kWpcSfLbqMlqw==</P><Q>xA3Byhq3RTP4YJYBdri/AZMBpRTiV+xSKi1XLz9m0QsNE5ctuwhbD3wY3YlMdIAbOAVewrxjTJg336z2JHPv/w==</Q><DP>VPgKa14ZNMacfUY/BSFhdbAj9viOHEroUbDsLUYejBLXgKNUr+WF5xQusjh6BfeQ32eKaZGKjCoZC1AEnUalrQ==</DP><DQ>BDAnC6I2eAv8KlQKA/c+XVI+nsArdaVeu/fr/N5l2+FYjiqUl4I+L75+6XydXX+/FRtIQvCzTleSGf0f5Pd1EQ==</DQ><InverseQ>xwGNcideNnj6XrDwLFSv3y7CMq2vMzuYxaObaNTU9sh1PTKVMRpiwdKWKpwnstXmDaSduBVw4EvfNlaz+SzUuw==</InverseQ><D>AJc4x13ZhLgGfpVWQN1Fwf+gYwvR12t1TRLJ+H4NqQb61CmHy0n8kCOo8iqOL4NOyaWSJOlD7X4mTY9+NZ8zOBn2Wij0r606Omw+/rlU986lwcxdBiw3y/LND3gowf1gR3Ei9K0eYsHTZZ9Ry9pmqowXi1DG916MBWSuwAbiOw0=</D></RSAKeyValue>";
                RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                rsa.FromXmlString(p);

                FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.None);

                SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
                byte[] hash = sha1.ComputeHash(fs);

                byte[] b = rsa.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
                fs.Close();

                FileInfo fi = new FileInfo(filename);
                fi.CopyTo(filename + ".p1s", true);
                FileStream fo = new FileStream(filename + ".p1s", FileMode.Append, FileAccess.Write, FileShare.None);
                fo.Write(b, 0, b.Length);
                fo.Close();

                MessageBox.Show(filename + ".p1s is successfully created.");
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }
开发者ID:zhuangyy,项目名称:Motion,代码行数:29,代码来源:UpdateMainForm.cs

示例2: Encrpyt

        private readonly static RSAParameters PrivateParams = Rsa.ExportParameters(true); //Complete key pairs.

        /// <summary>
        /// Encrypt an input string 
        /// </summary>
        /// <param name="input">the input string to be encrpty</param>
        /// <param name="signature">the private key signature</param>
        /// <returns>A Base 64 encrypted string or empty if can't encrpyt</returns>
        public static string Encrpyt(string input, out byte[] signature)
        {
            signature = null;
            try
            {
                if (string.IsNullOrEmpty(input)) return string.Empty;
                var provider = new RSACryptoServiceProvider(new CspParameters { Flags = CspProviderFlags.UseMachineKeyStore });
                provider.ImportParameters(PublicParams);

                var buffer = Encoding.ASCII.GetBytes(input);
                var encryptedbuffer = provider.Encrypt(buffer, false);

                var hash = new SHA1Managed();
                provider.ImportParameters(PrivateParams);
                var hashedData = hash.ComputeHash(encryptedbuffer);
                signature = provider.SignHash(hashedData, CryptoConfig.MapNameToOID("SHA1"));

                var stringBuilder = new StringBuilder();
                stringBuilder.Append(Convert.ToBase64String(encryptedbuffer));

                return stringBuilder.ToString();
            }
            catch
            {
                return string.Empty;
            }
        }
开发者ID:Heyvaert,项目名称:global,代码行数:35,代码来源:HashingHelper.cs

示例3: HashAndSign

 // Hash and sign the data
 public byte[] HashAndSign(byte[] encryptedData)
 {
     RSACryptoServiceProvider rsaCSP = new RSACryptoServiceProvider();
     rsaCSP.ImportParameters(PrivateKeyInfo);
     SHA1Managed hash = new SHA1Managed();
     byte[] hashedData = hash.ComputeHash(encryptedData);
     return rsaCSP.SignHash(hashedData, CryptoConfig.MapNameToOID("SHA1"));
 }
开发者ID:sharat,项目名称:DigitalSignatureSample,代码行数:9,代码来源:Sender.cs

示例4: Sign

 /// <summary>
 /// Sings a string with the full (private) RSA key provided as XML.
 /// </summary>
 public static string Sign(string inputString, string keyXml)
 {
     byte[] hash = generateHash(inputString);
     using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
     {
         rsa.FromXmlString(keyXml);
         byte[] sig = rsa.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
         return byteArrayToHexString(sig);
     }
 }
开发者ID:sheeeng,项目名称:Zydeo,代码行数:13,代码来源:SignatureCheck.cs

示例5: SignHash

 /// <summary>
 ///     Takes a string and creates a signed hash of it
 /// </summary>
 /// <param name="input">Input string</param>
 /// <param name="key">Key to encrypt/sign with</param>
 /// <param name="hash">This will be filled with the unsigned hash</param>
 /// <param name="encodingUsing">Encoding that the input is using (defaults to UTF8)</param>
 /// <returns>A signed hash of the input (64bit string)</returns>
 public static string SignHash(string input, string key, out string hash, Encoding encodingUsing = null)
 {
     Guard.NotEmpty(input, "input");
     Guard.NotEmpty(key, "key");
     using (var rsa = new RSACryptoServiceProvider())
     {
         rsa.FromXmlString(key);
         byte[] hashBytes = input.ToByteArray(encodingUsing).Hash();
         byte[] signedHash = rsa.SignHash(hashBytes, CryptoConfig.MapNameToOID("SHA1"));
         rsa.Clear();
         hash = hashBytes.ToBase64String();
         return signedHash.ToBase64String();
     }
 }
开发者ID:OxPatient,项目名称:Rule-Engine,代码行数:22,代码来源:RSAEncryption.cs

示例6: AllowUpdateIfIDontRequireChecksum

        public void AllowUpdateIfIDontRequireChecksum()
        {
            const string NauUpdateFeed =
                @"<?xml version=""1.0"" encoding=""utf-8""?>
            <Feed RSASignature=""SIGNATURE"">
              <Title>My application</Title>
              <Link>http://myapp.com/</Link>
              <Tasks>
            <FileUpdateTask sha256-checksum=""invalidhashButWeCanNotKnowThatNow"" localPath=""test.dll"" updateTo=""remoteFile.dll"" hotswap=""true"">
              <Description>update details</Description>
            </FileUpdateTask>
            <RegistryTask keyName=""asdf"" keyValue=""zsdfgafsdg"" valueKind=""String"">
            </RegistryTask>
              </Tasks>
            </Feed>";
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(NauUpdateFeed);

            // Support for different feed versions
            XmlNode root = doc.SelectSingleNode(@"/Feed[version=""1.0""] | /Feed") ?? doc;

            SHA512Managed sha = new SHA512Managed();
            var hash = sha.ComputeHash(Encoding.UTF8.GetBytes(root.InnerXml));

            RSACryptoServiceProvider provider = new RSACryptoServiceProvider(1024);
            provider.PersistKeyInCsp = false;
            var pubKey = provider.ToXmlString(false);

            var sigBytes = provider.SignHash(hash, "sha512");
            var sig = Convert.ToBase64String(sigBytes);

            var update = NauUpdateFeed.Replace("SIGNATURE", sig);

            bool isVerified = provider.VerifyHash(hash, "sha512", Convert.FromBase64String(sig));
            Assert.IsTrue(isVerified);

            var reader = new NAppUpdate.Framework.FeedReaders.NauXmlFeedReaderSigned();
            reader.PublicKeys = new string[] { pubKey };

            IList<IUpdateTask> updates = reader.Read(update);
            Assert.IsTrue(updates != null && updates.Count == 2);
        }
开发者ID:halotron,项目名称:NAppUpdate,代码行数:42,代码来源:NauXmlFeedReaderSignedTests.cs

示例7: UserRevocationMessage

    /// <summary>Create a new revocation message.</summary>
    public UserRevocationMessage(RSACryptoServiceProvider private_key, string username)
    {
      Username = username;
      int signature_length = private_key.KeySize / 8;
      byte[] data = null;

      using(MemoryStream ms = new MemoryStream()) {
        AdrConverter.Serialize(Username, ms);
        Random rand = new Random();
        NumberSerializer.WriteInt(rand.Next(), ms);
        NumberSerializer.WriteLong(DateTime.UtcNow.Ticks, ms);
        data = new byte[ms.Length + signature_length];
        ms.Position = 0;
        ms.Read(data, 0, (int) ms.Length);
      }

      SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
      Hash = sha1.ComputeHash(data, 0, data.Length - signature_length);
      Signature = private_key.SignHash(Hash, CryptoConfig.MapNameToOID("SHA1"));
      Signature.CopyTo(data, data.Length - signature_length);
      _data = MemBlock.Reference(data);
    }
开发者ID:pstjuste,项目名称:brunet,代码行数:23,代码来源:UserRevocationMessage.cs

示例8: RSASign

        static public Byte[] RSASign(Byte[] hash, String private_key)
        {
            try
            {
                byte[] signed;
                // Erstellen einer Instanz des CryptoServiceProviders
                using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
                {
                    // Importieren der Schlüssel
                    RSA.FromXmlString(private_key);

                    // Verschlüsseln.
                    signed = RSA.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
                }
                return signed;
            }
            catch (CryptographicException e)
            {
                Console.WriteLine(e.ToString());
                return null;
            }
        }
开发者ID:philipp-spiess,项目名称:.net-security-examples,代码行数:22,代码来源:Program.cs

示例9: CreateCertificateSignature

        public static string CreateCertificateSignature(HttpWebRequest request, DigiUser user)
        {
            var s = request.Method.ToUpper() + "\n" +
                    request.RequestUri.AbsolutePath.ToLower() + "\n" +
                    "content-md5: " + request.Headers["Content-MD5"] + "\n" +
                    "date: " + request.Date.ToUniversalTime().ToString("r") + "\n" +
                    "x-digipost-userid: " + request.Headers["X-Digipost-UserId"] + "\n" +
                    HttpUtility.UrlEncode(request.RequestUri.Query).ToLower() + "\n";

            var rsa = user.Certificate.PrivateKey as RSACryptoServiceProvider;

            if (rsa == null) return null;

            var privateKeyBlob = rsa.ExportCspBlob(true);
            var rsa2 = new RSACryptoServiceProvider();
            rsa2.ImportCspBlob(privateKeyBlob);

            var sha = SHA256.Create();
            var hash = sha.ComputeHash(Encoding.UTF8.GetBytes(s));
            var signature = rsa2.SignHash(hash, CryptoConfig.MapNameToOID("SHA256"));

            return Convert.ToBase64String(signature);
        }
开发者ID:henningms,项目名称:digipost-hackathon-api-dotnet,代码行数:23,代码来源:Http.cs

示例10: SignHash

        /// <summary>
        /// Signs given hash with provided key.
        /// </summary>
        /// <param name="hash">hash to sign</param>
        /// <param name="privateKey">private key</param>
        /// <returns>Signed hash (string in base64 form)</returns>
        public string SignHash(byte[] hash, byte[] privateKey)
        {
            byte[] signedBytes;

            using (var RSA = new RSACryptoServiceProvider())
            {
                // do not store key info into persistent storage of CSP
                RSA.PersistKeyInCsp = false;

                try
                {
                    RSA.ImportCspBlob(privateKey);
                    signedBytes = RSA.SignHash(hash, CryptoConfig.MapNameToOID("SHA256"));
                }
                catch (CryptographicException e)
                {
                    Debug.Fail(e.Message);
                    return null;
                }
                finally
                {
                    RSA.PersistKeyInCsp = false;
                }
            }
            return Convert.ToBase64String(signedBytes);
        }
开发者ID:fluxit,项目名称:SpaceEngineers,代码行数:32,代码来源:MyRSA.cs

示例11: SignHash

 /// <summary>
 /// Takes a string and creates a signed hash of it
 /// </summary>
 /// <param name="Input">Input string</param>
 /// <param name="Key">Key to encrypt/sign with</param>
 /// <param name="Hash">This will be filled with the unsigned hash</param>
 /// <param name="EncodingUsing">Encoding that the input is using (defaults to UTF8)</param>
 /// <returns>A signed hash of the input (64bit string)</returns>
 public override string SignHash(string Input, string Key, out string Hash, Encoding EncodingUsing = null)
 {
     Contract.Requires<ArgumentNullException>(!string.IsNullOrEmpty(Key), "Key");
     Contract.Requires<ArgumentNullException>(!string.IsNullOrEmpty(Input), "Input");
     using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
     {
         RSA.FromXmlString(Key);
         byte[] HashBytes = Input.ToByteArray(EncodingUsing).Hash();
         byte[] SignedHash = RSA.SignHash(HashBytes, CryptoConfig.MapNameToOID("SHA1"));
         RSA.Clear();
         Hash = HashBytes.ToString(Base64FormattingOptions.None);
         return SignedHash.ToString(Base64FormattingOptions.None);
     }
 }
开发者ID:modulexcite,项目名称:Craig-s-Utility-Library,代码行数:22,代码来源:RSA.cs

示例12: SignHash

 /// <summary>
 /// Takes a string and creates a signed hash of it
 /// </summary>
 /// <param name="Input">Input string</param>
 /// <param name="Key">Key to encrypt/sign with</param>
 /// <param name="Hash">This will be filled with the unsigned hash</param>
 /// <param name="EncodingUsing">Encoding that the input is using (defaults to UTF8)</param>
 /// <returns>A signed hash of the input (64bit string)</returns>
 public static string SignHash(string Input, string Key, out string Hash, Encoding EncodingUsing = null)
 {
     Input.ThrowIfNullOrEmpty("Input");
     Key.ThrowIfNullOrEmpty("Key");
     using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
     {
         RSA.FromXmlString(Key);
         byte[] HashBytes = Input.ToByteArray(EncodingUsing).Hash();
         byte[] SignedHash = RSA.SignHash(HashBytes, CryptoConfig.MapNameToOID("SHA1"));
         RSA.Clear();
         Hash = HashBytes.ToBase64String();
         return SignedHash.ToBase64String();
     }
 }
开发者ID:gwilkinson,项目名称:Craig-s-Utility-Library,代码行数:22,代码来源:RSAEncryption.cs

示例13: RsaTest_Signature

        public MFTestResults RsaTest_Signature()
        {
            bool testResult = false;

            try
            {
                using (RSACryptoServiceProvider csp = new RSACryptoServiceProvider())
                {
                    string dataToSign = "This is a simple message to be encrypted";

                    byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(dataToSign);

                    byte[] signature = csp.SignData(data, null);

                    testResult = csp.VerifyData(data, null, signature);

                    HashAlgorithm sha = new HashAlgorithm(HashAlgorithmType.SHA1, csp.Session);

                    byte[] hash = sha.ComputeHash(data);

                    signature = csp.SignHash(hash, MechanismType.SHA_1);
                    testResult &= csp.VerifyHash(hash, MechanismType.SHA_1, signature);
                }
            }
            catch (Exception ex)
            {
                Log.Exception("Unexpected Exception", ex);
            }

            return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
        }
开发者ID:koson,项目名称:.NETMF_for_LPC17xx,代码行数:31,代码来源:RSATest.cs

示例14: CspSignPublic

 /// <summary>
 ///		Sign with only public key
 /// </summary>
 private static void CspSignPublic()
 {
     using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
     {
         rsa.KeyPair = CryptoKey.CreateObject(rsa.Session, m_importKeyPublic) as CryptoKey;
         rsa.SignHash(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }, Cryptoki.MechanismType.SHA_1);
     }
     return;
 }
开发者ID:aura1213,项目名称:netmf-interpreter,代码行数:12,代码来源:RSA.cs

示例15: CspSignNullHash

 /// <summary>
 ///		Sign null hash
 /// </summary>
 private static void CspSignNullHash()
 {
     using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
     {
         rsa.SignHash((byte[])null, Cryptoki.MechanismType.SHA_1);
     }
 }
开发者ID:aura1213,项目名称:netmf-interpreter,代码行数:10,代码来源:RSA.cs


注:本文中的System.Security.Cryptography.RSACryptoServiceProvider.SignHash方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。