Tag: cryptography

使用Base64编码的公钥来validationRSA签名

简而言之,这是我的问题: private string publicKeyString = “MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVGUzbydMZS+fnkGTsUkDKEyFOGwghR234d5GjPnMIC0RFtXtw2tdcNM8I9Qk+h6fnPHiA7r27iHBfdxTP3oegQJWpbY2RMwSmOs02eQqpKx4QtIjWqkKk2Gmck5cll9GCoI8AUAA5e0D02T0ZgINDmo5yGPhGAAmqYrm8YiupwQIDAQAB”; /* Some transformation required, using publicKeyString to initiate a new RSACryptoServiceProvider object */ //for now: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); byte[] selfComputedHash = new byte[]; //left out of the example byte[] signature = new byte[]; bool result = rsa.VerifyHash(selfComputedHash, CryptoConfig.MapNameToOID(“SHA1”), signature); 如您所见,问题是使用给定的Base64编码公钥字符串启动新的RSACryptoServiceProvider。 我已经能够使用对象RSAParameters进行实例化,该对象使用OpenSSL shell命令从用于此公钥字符串的Modulus和Exponent加载byte []。 但由于此公钥可能在将来发生变化,因此我希望能够将其以原始forms存储在数据库中。 必须有一种更直接的方法来解决这个问题。 到目前为止,我读过的很多例子都是通过将生成的私钥和公钥导入和导出密钥容器对象并在同一段代码中使用它来避免这个问题,因此不会“转移”密钥。一些字符串forms内存不足。 有些人在StackOverflow和其他网站上都表达了同样的问题,但我还没有找到令人满意的答案。 […]

Bouncy Castle C#中的PBKDF2

我正在弄乱C#Bouncy Castle API以找到如何进行PBKDF2密钥派生。 我现在真的很无能为力。 我尝试通过Pkcs5S2ParametersGenerator.cs和PBKDF2Params.cs文件阅读,但我真的无法弄清楚如何做到这一点。 根据我迄今为止所做的研究,PBKDF2需要一个字符串(或char []),它是密码,盐和迭代计数。 到目前为止,迄今为止最有希望和最明显的是PBKDF2Params和Pkcs5S2ParametersGenerator。 这些似乎都不接受字符串或char []。 有没有人用C#做过这个或有任何线索? 或者也许有人用Java实现了BouncyCastle并可以提供帮助? 提前很多:) 更新:我在Bouncy Castle找到了如何做到这一点。 看下面的答案:)

如何使用rs256算法使用我自己的rsa私钥来签名字节?

我有自己的私钥字符串,即 —–BEGIN RSA PRIVATE KEY—– MIICXAIBAAKBgQCSAYYgzvGTww…. …. …. ….. 3yUMYj9oYzqdrRHP0XgD0cEEvyqPBwLaNsRdFwy5qTiHjj0f+ZWHQWmqcoLmmpzyZEbIvQm/VhbjRF6iKG4WZ9Hfa7ntYRNGdWgD/KMIeZI= —–END RSA PRIVATE KEY—– 现在,我需要在C#中使用此私钥签署我的声明集以生成JWT有效负载。 我写了以下代码: var utc0 = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); var issueTime = DateTime.Now; var iat = (int)issueTime.Subtract(utc0).TotalSeconds; var exp = (int)issueTime.AddMinutes(55).Subtract(utc0).TotalSeconds; var payload = new { iss = email, prn = prn, scope = “scope”, aud […]

C#PasswordDeriveBytes混淆

我在C#中有以下代码 PasswordDeriveBytes DerivedPassword = new PasswordDeriveBytes(Password, SaltValueBytes, HashAlgorithm, PasswordIterations); byte[] KeyBytes = DerivedPassword.GetBytes(32); 我正在使用“SHA1”哈希算法。 根据SHA1定义,它生成160位(20字节)密钥。 我的问题是GetBytes方法如何从DerivedPassword中获取32个字节,GetBytes方法后面使用了什么算法?

如何使用密码短语生成Rijndael KEY和IV?

如何使用密码短语生成Rijndael KEY和IV? 密钥长度必须为256位。

是否应该添加或删除这些参数?

当Resharper与自己争论时,如何知道哪个角色更可信? 我想我发现一些代码确实让Resharper感到困惑(这显然是一个非常不寻常的案例 – 在使用它一天之后,我认为Resharper是蜜蜂的膝盖/自从液化面包以来最好的东西等)。 使用这行代码: ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16)); Resharper告诉我“添加参数名称’rgbkey’”然后“添加参数名称’rgbIV’” 那么这条线就是: ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(rgbKey: SecretKey.GetBytes(32), rgbIV: SecretKey.GetBytes(16)); 然而,当我再次运行Resharper时,它说, “冗余参数名称规范” – “删除参数名称规范”(rgbkey) (然后是rgbIV)。 似乎两种方式都可行,但……

SQLite中的SHA1哈希:怎么样?

并行使用多个DB,需要使用散列密码初始化一些记录。 在MS SQL server有一些方便的函数可以动态散列: HashBytes(‘SHA1′, CONVERT(nvarchar(32), N’admin’)) SQLite是否有类似的function? 如果没有,这是最简单的解决方法(例如从SQL server选择并以某种方式将其插入到SQLite表中)? 首选的散列算法是SHA1 ,密码存储在BLOB列中。 更新:我在当前项目中使用C#语言。

从私有指数(d),公共指数(e)和模数(n)计算素数p和q

如何从e(publickey),d(私钥)和模数计算p和q参数? 我手头有BigInteger键我可以将粘贴复制到代码中。 一个公钥,一个私钥和一个模数。 我需要从中计算RSA参数p和q。 但我怀疑有一个库,我无法用谷歌找到它。 有任何想法吗? 谢谢。 这不一定是暴力,因为我不是在私钥之后。 我只有一个遗留系统,它存储公钥,私钥对和模数,我需要将它们放入c#以与RSACryptoServiceProvider一起使用。 因此,它归结为计算(p + q) public BigInteger _pPlusq() { int k = (this.getExponent() * this.getD() / this.getModulus()).IntValue(); BigInteger phiN = (this.getExponent() * this.getD() – 1) / k; return phiN – this.getModulus() – 1; } 但这似乎不起作用。 你能发现问题吗? 5个小时后…… 🙂 好。 如何在C#中选择Zn *( http://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n )中的随机数?

将公钥从其他地方导入CngKey?

我正在寻找一种跨平台的方式来共享ECDSA签名的公钥。 从CngKey和标准.NET加密库的性能角度来看,我有一个很棒的事情,但后来我无法弄清楚33(或65)字节的公钥(使用secp256r1 / P256)是如何变成104字节的由MS .. Ergo,我无法支持跨平台签名和validation.. 我现在正在使用BouncyCastle,但神圣的handgranade它很慢! 因此,寻找以下要求的建议: 跨平台/语言(服务器是.NET,但这是通过JSON / Web.API接口提供的) JavaScript,Ruby,Python,C ++等。 在服务器上并不疯狂 不那么痛苦的慢人们不能在客户端上使用它。 客户端必须能够对消息进行签名,服务器必须能够使用在注册到服务时交换的公钥来validation签名。 无论如何,想法会很棒…谢谢

C#将RSACryptoServiceProvider中的私有/公共RSA密钥导出为PEM字符串

我有一个System.Security.Cryptography.RSACryptoServiceProvider的实例,我需要将它的密钥导出到PEM字符串 – 如下所示: —–BEGIN RSA PRIVATE KEY—– MIICXAIBAAKBgQDUNPB6Lvx+tlP5QhSikADl71AjZf9KN31qrDpXNDNHEI0OTVJ1 OaP2l56bSKNo8trFne1NK/B4JzCuNP8x6oGCAG+7bFgkbTMzV2PCoDCRjNH957Q4 Gxgx1VoS6PjD3OigZnx5b9Hebbp3OrTuqNZaK/oLPGr5swxHILFVeHKupQIDAQAB AoGAQk3MOZEGyZy0fjQ8eFKgRTfSBU1wR8Mwx6zKicbAotq0CBz2v7Pj3D+higlX LYp7+rUOmUc6WoB8QGJEvlb0YZVxUg1yDLMWYPE7ddsHsOkBIs7zIyS6cqhn0yZD VTRFjVST/EduvpUOL5hbyLSwuq+rbv0iPwGW5hkCHNEhx2ECQQDfLS5549wjiFXF gcio8g715eMT+20we3YmgMJDcviMGwN/mArvnBgBQsFtCTsMoOxm68SfIrBYlKYy BsFxn+19AkEA82q83pmcbGJRJ3ZMC/Pv+/+/XNFOvMkfT9qbuA6Lv69Z1yk7I1ie FTH6tOmPUu4WsIOFtDuYbfV2pvpqx7GuSQJAK3SnvRIyNjUAxoF76fGgGh9WNPjb DPqtSdf+e5Wycc18w+Z+EqPpRK2T7kBC4DWhcnTsBzSA8+6V4d3Q4ugKHQJATRhw a3xxm65kD8CbA2omh0UQQgCVFJwKy8rsaRZKUtLh/JC1h1No9kOXKTeUSmrYSt3N OjFp7OHCy84ihc8T6QJBANe+9xkN9hJYNK1pL1kSwXNuebzcgk3AMwHh7ThvjLgO jruxbM2NyMM5tl9NZCgh1vKc2v5VaonqM1NBQPDeTTw= —–END RSA PRIVATE KEY—– 但根据MSDN文档,没有这样的选项,只有某种XML导出。 我不能使用任何第三方库,如BouncyCastle。 有没有办法生成这个字符串?