Tag: cryptography

如何在.NET 4.5 Core中计算HMAC-SHA1身份validation代码

我目前面临一个大问题(环境:.NET 4.5 Core):我们需要使用HMAC-SHA1算法用密钥保护消息。 问题是名称空间System.Security.Cryptography的HMACSHA1类和名称空间本身在.NET 4.5 Core中不存在,此命名空间仅存在于.NET的正常版本中。 我尝试了很多方法为我们的目的找到一个等效的命名空间,但我发现的唯一的东西是Windows.Security.Cryptography ,遗憾的是它没有提供HMAC加密。 有没有人知道如何解决我们的问题,或者是否可以免费使用第三方解决方案?

C#SHA-256与Java SHA-256。 结果不同?

我想将一些Java中的代码转换为C#。 Java代码: private static final byte[] SALT = “NJui8*&N823bVvy03^4N”.getBytes(); public static final String getSHA256Hash(String secret) { try { MessageDigest digest = MessageDigest.getInstance(“SHA-256”); digest.update(secret.getBytes()); byte[] hash = digest.digest(SALT); StringBuffer hexString = new StringBuffer(); for (int i = 0; i < hash.length; i++) { hexString.append(Integer.toHexString(0xFF & hash[i])); } return hexString.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } […]

RSA解密C#(.NET 3.5)中的数据,该数据在php 5.3.2中使用openssl加密

也许有人可以让我知道。 我一直在冲浪这一段时间。 步骤1:创建根证书 unix上的密钥生成 1) openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout privatekey.pem -out mycert.pem 2) openssl rsa -in privatekey.pem -pubout -out publickey.pem 3) openssl pkcs12 -export -out mycertprivatekey.pfx -in mycert.pem -inkey privatekey.pem -name “my certificate” 步骤#2:根证书是否适用于php:YES PHP方面 我使用publickey.pem将其读入php: $publicKey = “file://C:/publickey.pem”; $privateKey = “file://C:/privatekey.pem”; $plaintext = “123”; openssl_public_encrypt($plaintext, $encrypted, $publicKey); $transfer = […]

便携式类库(PCL)贡献 – 密码学

我想在codeplex上的Portable Class Library Contrib项目中使用加密,但是没有找到关于如何使用它的任何文档。 我想在其中创建一个包含Encrypt和Decrypt方法的包装类,我希望这个包装类存在于一个可移植的类库中。 我在这个项目中引用了Portable.Runtime和Portable.Security.Cryptography 。 它是否正确? 然后我想在.NET,Windows Phone和Metro项目中使用我的包装器。 在这些项目中,我引用了我的包装器项目, Portable.Runtime , Portable.Security.Cryptography和相应的Portable项目,即Portable.Desktop , Portable.Phone或Portable.WindowsStore 。 它是否正确? 但是当我尝试使用我的包装器类时,我遇到了冲突的命名空间错误。 这是错误和我的包装类: System.Security.Cryptography.AesManaged类型存在于C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Core.dll和C:\Downloads\PclContrib\bin\Debug\Portable.Security.Cryptography.dll public sealed class SymmetricCryptography where T : SymmetricAlgorithm, new() { private readonly T provider = new T(); private readonly UTF8Encoding utf8 = new UTF8Encoding(); private byte[] key; private byte[] iv; public […]

.NET私钥Rsa加密

我需要使用RSA 1.5算法加密字符串。 我已获得私钥。 但是,我不能为我的生活弄清楚如何将这个键添加到课堂中。 似乎关键需要是RSAParameter stuct类型。 然而,这需要一组我没有给出的值,如模数,指数,P,Q等。我所拥有的只是私钥。 有人可以帮忙吗?

如何计算加密中的对数?

我试图在字节上执行非线性函数来实现SAFER +。 该算法需要计算基数为45的字节对数,我不明白该怎么做。 log 45 (201)= 1.39316393 当我将其分配给一个字节时,该值被截断为1,我无法恢复确切的结果。 我怎么处理这个?

.NET Core 2.0 RSA PlatformNotSupportedException

我试图使用此代码生成公钥和私钥,我在Windows 10上使用.NET Core 2 到目前为止,我没有成功运行此代码,它编译得很好,但是当我到达rsa.ToXmlString行时,它会丢弃PlatformNotSupportedException,当我在堆栈溢出的另一个答案中读到时,解决方案是使用System.Security.Cryptography.Algorithms和它们显示了我在下面使用的几乎精确的代码。 using (RSA rsa = RSA.Create()) { rsa.KeySize = 1024; privateKey = rsa.ToXmlString(true); publicKey = rsa.ToXmlString(false); } 错误: 如此处所示它确实出现在他们的API浏览器中,因此必须得到支持,对吧? 有没有人有类似的问题? 或者有没有人解决这个问题? 我必须使用.NET Core,所以不建议使用.NET 4.6

CFB模式下的TripleDES,C#和Crypto ++有所不同

这是我的问题:我有一个C ++中的遗留代码(使用crypto ++ v5.6.1),我在C#中开发了一个新代码(使用System.Security.Cryptography的.NET 3.5)。 我无法更改 C ++代码,但我需要能够解密先前加密的数据,以前的应用程序必须能够解密我将使用新的C#代码加密的数据。 在两种情况下使用的算法都是具有CFB密码模式的TripleDES,但最后,加密数据不相同,字节数和第一个字节相同,但除此之外所有其他字节都不同。 在C ++代码中手动完成填充(添加零)。 所以我将PaddingValue设置为PaddingMode.Zeros。 (我也尝试在C#代码中手动添加零,它没有改变任何东西)。 我尝试使用不同的System.Text.Encoding但结果是相同的(实际上测试的字符是“纯”ASCII(即:在0和126之间))。 在C ++代码中,MandatoryBlockSize()的值是8,所以我也将FeedbackSize设置为8。 但是,如果我理解它写,它实际上是我的IV的大小,不是吗? 密钥大小为24个字节(3个不同的密钥),IV为8个字节长。 它们在2个代码中都是相同的。 如果我在两种情况下都使用CBC模式,结果是相同的(但是,正如我所说,我无法更改遗留代码…),OFB和CTS模式抛出exception(一个不可用,另一个不兼容)在我的.NET应用程序上,所以我无法比较结果。 我尝试使用Mono,.Net版本3.5和4.0,或使用visual,与.Net 3.5或4.0,4加密结果相同,但它与原始结果不同。 现在我真的不知道要测试什么…我宁愿不在C ++ / CLI项目中包装Crypto ++来使用它而不是System.Security.Cryptography。 有人有建议或者能说出我做错了什么吗? 这是C ++代码: void *CryptData(BYTE *bDataIn, LONG lIn, LONG *lOut, byte* key, byte* iv) { byte *bIn; byte *bOut; LONG l2,lb; CFB_FIPS_Mode::Encryption encryption_DES_EDE3_CFB; encryption_DES_EDE3_CFB.SetKeyWithIV(key, sizeof(key), iv, sizeof(iv)); lb […]

参考摘要validation失败

我实现了自定义STS。 经过身份validation和重定向但在页面加载之前,我会收到此错误: [CryptographicException: Digest verification failed for Reference ‘#_8e0aea1a-713d-4536-8fac-a768073395e9’.] 每次尝试时参考编号都会改变。

使用C#和CryptoJS进行不同的加密结果

我在服务器应用程序中使用AES加密一些数据,这是用C#编写的。 我使用预定义的密钥(32字节)和IV(16字节),例如…… Key: 81fe1681..6a451c1c IV: e83c..ae76 这是我用来加密数据的C#代码: async Task Encrypt(string privateKey, string pin, byte[] data) { using (var sha = SHA256.Create()) { byte[] keyHash = sha.ComputeHash(Encoding.UTF8.GetBytes($”{privateKey}”)); byte[] pinHash = sha.ComputeHash(Encoding.UTF8.GetBytes($”{pin}”)); using (Aes aes = Aes.Create()) { byte[] key = keyHash.Slice(0, aes.Key.Length); byte[] iv = pinHash.Slice(0, aes.IV.Length); using (ICryptoTransform transform = aes.CreateEncryptor(key, iv)) using (var stream […]