Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. Create Rsa Signature

Create Rsa Signature

Scheduled Pinned Locked Moved C#
question
2 Posts 2 Posters 1 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • U Offline
    U Offline
    upmnemam
    wrote on last edited by
    #1

    I have one function witch check signature.

    public static bool CheckSignature(string key64, string sig64)
    {
    var key = Convert.FromBase64String(key64);
    var sig = Convert.FromBase64String(sig64);

            var rsa = new RSACryptoServiceProvider(new CspParameters
            {
                Flags = CspProviderFlags.UseMachineKeyStore
            });
            rsa.FromXmlString("4IlzOY3Y9fXoh3Y5f06wBbtTg94Pt6vcfcd1KQ0FLm0S36aGJtTSb6pYKfyX7PqCUQ8wgL6xUJ5GRPEsu9 gyz8ZobwfZsGCsvu40CWoT9fcFBZPfXro1Vtlh/xl/yYHm+Gzqh0Bw76xtLHSfLfpVOrmZdwKmSFKMTvNXOFd0V18=AQAB");
            var def = new RSAPKCS1SignatureDeformatter();
            def.SetKey(rsa);
            def.SetHashAlgorithm("MD5");
    
            return def.VerifySignature(key, sig);
    
        }
    

    Now i need to create signature for one of my keys.

       public static byte\[\] CreateSignature(string key64)
        {
            var data = Convert.FromBase64String(key64);
    
            var rSaCryptoServiceProvider = new RSACryptoServiceProvider(new CspParameters
            {
               Flags = CspProviderFlags.UseMachineKeyStore
            });
    
            rSaCryptoServiceProvider.FromXmlString("4IlzOY3Y9fXoh3Y5f06wBbtTg94Pt6vcfcd1KQ0FLm0S36aGJtTSb6pYKfyX7PqCUQ8wgL6xUJ5GRPEsu9 gyz8ZobwfZsGCsvu40CWoT9fcFBZPfXro1Vtlh/xl/yYHm+Gzqh0Bw76xtLHSfLfpVOrmZdwKmSFKMTvNXOFd0V18=AQAB");
          
    
            var RSAform = new RSAPKCS1SignatureFormatter();
            RSAform.SetKey(rSaCryptoServiceProvider);
            RSAform.SetHashAlgorithm("MD5");
    
            byte\[\] hashData = CalculateMD5Hash(data);
    
            return RSAform.CreateSignature(hashData);
        }
    

    But im getting an exception "Keyset does not exist" on "RSAform.CreateSignature(hashData)" line. Any suggestion?

    Still amater

    H 1 Reply Last reply
    0
    • U upmnemam

      I have one function witch check signature.

      public static bool CheckSignature(string key64, string sig64)
      {
      var key = Convert.FromBase64String(key64);
      var sig = Convert.FromBase64String(sig64);

              var rsa = new RSACryptoServiceProvider(new CspParameters
              {
                  Flags = CspProviderFlags.UseMachineKeyStore
              });
              rsa.FromXmlString("4IlzOY3Y9fXoh3Y5f06wBbtTg94Pt6vcfcd1KQ0FLm0S36aGJtTSb6pYKfyX7PqCUQ8wgL6xUJ5GRPEsu9 gyz8ZobwfZsGCsvu40CWoT9fcFBZPfXro1Vtlh/xl/yYHm+Gzqh0Bw76xtLHSfLfpVOrmZdwKmSFKMTvNXOFd0V18=AQAB");
              var def = new RSAPKCS1SignatureDeformatter();
              def.SetKey(rsa);
              def.SetHashAlgorithm("MD5");
      
              return def.VerifySignature(key, sig);
      
          }
      

      Now i need to create signature for one of my keys.

         public static byte\[\] CreateSignature(string key64)
          {
              var data = Convert.FromBase64String(key64);
      
              var rSaCryptoServiceProvider = new RSACryptoServiceProvider(new CspParameters
              {
                 Flags = CspProviderFlags.UseMachineKeyStore
              });
      
              rSaCryptoServiceProvider.FromXmlString("4IlzOY3Y9fXoh3Y5f06wBbtTg94Pt6vcfcd1KQ0FLm0S36aGJtTSb6pYKfyX7PqCUQ8wgL6xUJ5GRPEsu9 gyz8ZobwfZsGCsvu40CWoT9fcFBZPfXro1Vtlh/xl/yYHm+Gzqh0Bw76xtLHSfLfpVOrmZdwKmSFKMTvNXOFd0V18=AQAB");
            
      
              var RSAform = new RSAPKCS1SignatureFormatter();
              RSAform.SetKey(rSaCryptoServiceProvider);
              RSAform.SetHashAlgorithm("MD5");
      
              byte\[\] hashData = CalculateMD5Hash(data);
      
              return RSAform.CreateSignature(hashData);
          }
      

      But im getting an exception "Keyset does not exist" on "RSAform.CreateSignature(hashData)" line. Any suggestion?

      Still amater

      H Offline
      H Offline
      Hessam Jalali
      wrote on last edited by
      #2

      RSA keys are in pairs, but you used public key in both methods. replacing provided key in CheckSignature with private key should solve your problem. and in CheckSignature method you should feed VerifySignature with MD5 hash of key varibale, the code should be more like this

          public static byte\[\] CreateSignature(string key64)
          {
              var data = Convert.FromBase64String(key64);
      
              var rSaCryptoServiceProvider = new RSACryptoServiceProvider(new CspParameters
              {
                  Flags = CspProviderFlags.UseMachineKeyStore
              });
      
              rSaCryptoServiceProvider.FromXmlString(privateKey);
      
      
              var RSAform = new RSAPKCS1SignatureFormatter();
              RSAform.SetKey(rSaCryptoServiceProvider);
              RSAform.SetHashAlgorithm("MD5");
      
              var md5 = MD5.Create();
              byte\[\] hashData = md5.ComputeHash(data);
      
              return RSAform.CreateSignature(hashData);
          }
      

      hope this helps

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • World
      • Users
      • Groups