Tag: encryption

如何在RSAParameters上设置公钥和私钥以用于RSACryptoServiceProvider?

我在线阅读了一些教程,并生成了公钥和私钥,但是如何将它们设置为在C#中使用? 这是我有的: string publicKey = “…”; string privateKey = “….”; UnicodeEncoding ByteConverter = new UnicodeEncoding(); byte[] dataToEncrypt = ByteConverter.GetBytes(“Data to Encrypt”); byte[] encryptedData; byte[] decryptedData; string decrptedStr = “”; using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider()) { RSAParameters myRSAParameters = RSA.ExportParameters(true); myRSAParameters.Modulus = ByteConverter.GetBytes(publicKey); myRSAParameters.Exponent = ByteConverter.GetBytes(privateKey); encryptedData = RSAEncrypt(dataToEncrypt, myRSAParameters, false); decryptedData = RSADecrypt(encryptedData, myRSAParameters, […]

在ASP.Net应用程序中安全地存储(加密)数据

我有一个asp.net应用程序,可以通过互联网使用Web浏览器访问。 它在Web服务器上运行,并与后端数据库进行通信。 一些用户希望使用该应用程序来存储一些私人数据。 这个要求是: 1)只有存储数据的用户才能看到它。 2)开发人员/ dbas不应该能够看到数据。 3)如果Web服务器和数据库服务器受到攻击,则黑客必须无法解密数据。 所以,很明显我将不得不加密这些数据。 如果我加密它会在某个地方有一个密钥,可能是盐/ IV。 问题是我在哪里存储用于执行解密的数据? 如果我将它存储在数据库或Web服务器中,那么开发人员,dba或黑客可以访问它并解密数据。 我认为我理想的解决方案是将私钥放在客户机上,这样他们就完全负责了。 但我不知道如何使用asp.net Web应用程序来解决这个问题。 我相信我可以创建一个也存储私钥(PFX)的证书。 客户公司可以使用组策略将证书部署到其域。 但是,ASP.Net应用程序可以请求Web浏览器向其发送私钥,以便它可以执行解密吗? 解密客户端将是最好的,但除了在JavaScript中创建一些东西,我不知道这是如何可能的。 欢迎任何建议。

JavaScript中的加密不会在C#中解密

我试图在JavaScript中使用RSA加密,然后在C#中解密它。 在JavaScript中我使用的是库jsencrypt。 在C#中我使用API​​“充气城堡”。 当我在同一种语言中进行加密/解密时,一切正常。 当我解密它时,我得到了正确的文本。 当我尝试在C#中解密用JavaScript加密的内容时,我什么都没有得到。 我确信两者之间的关键是相同的。 代码示例如下。 任何有关如何解决这个问题的帮助将不胜感激。 JavaScript的 //using jsencrypt.min.js var encrypt = new JSEncrypt(); encrypt.setPublicKey($(‘#pubkey’).val()); var encrypted = encrypt.encrypt($(‘#input’).val()); 从JavaScript中获取“加密”的值,并在C#中用于“encyp” AsymmetricCipherKeyPair KeyParameterPrivate; byte[] cipheredBytes = Convert.FromBase64String(encyp); string privateKeyFileName = @”C:\private.pem”; using (var fileStream2 = File.OpenText(privateKeyFileName)) { PemReader pemReader2 = new Org.BouncyCastle.OpenSsl.PemReader(fileStream2); KeyParameterPrivate = (Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair)pemReader2.ReadObject(); } IAsymmetricBlockCipher cipher2 = new Org.BouncyCastle.Crypto.Engines.RsaEngine(); RsaKeyParameters privateKey2 […]

8字节纯文本的DES加密产生16字节数组

我使用此代码加密8字节PlainText与8字节键,但结果始终是16字节数组。 public static byte[] Encrypt(byte[] PlainText, byte[] key) { MemoryStream ms = new MemoryStream(); DESCryptoServiceProvider mDES = new DESCryptoServiceProvider(); mDES.Mode = CipherMode.ECB; mDES.Key = key; CryptoStream encStream = new CryptoStream(ms, mDES.CreateEncryptor(), CryptoStreamMode.Write); BinaryWriter bw = new BinaryWriter(encStream); bw.Write(PlainText); bw.Close(); encStream.Close(); byte[] buffer = ms.ToArray(); ms.Close(); return buffer; } ouptut的前8个字节是我所期望的,但其余的我不知道它是什么..这个代码有问题吗?

c#alternative中cfusion_encrypt中填充的键是什么?

我在这里找到了从C#复制cfusion_encrypt函数的答案…… ColdFusion – cfusion_encrypt()和cfusion_decrypt() – C#替代方案 但答案并没有说明用什么键填充它以使其与明文相同的长度? 任何人都可以建议用钥匙填充什么? 无论是向右还是向左填充?

存储凭据以便自动使用

我已经环顾四周,因为我不是安全或加密专家,我仍然对如何在我的程序中实现加密感到困惑。 我需要一台服务器登录到它的gitHub帐户来更新带有特殊标题的代码文件。 我现在唯一的挂断是如何存储/检索服务器的凭据。 PushOptions push = new PushOptions { Credentials = new UsernamePasswordCredentials { Password = “password”, Username = “Username” } }; 我如何加密这些凭据以进行存储? 我知道将它们存储在代码中是一个坏主意,就像示例那样,并且将它们存储在未加密的任何文件中也是一个坏主意。 此外,我想要的唯一用户交互是在服务器上编译和设置程序时发生的。 它是Linux服务器上的cronjob,以防万一。 另一个要注意的细节,我正在使用libgit2sharp,但之前使用的是bash脚本和ssh来进行身份validation以进行测试。

对象已存在于RSACryptoServiceProvider中

我将源代码从一个应用程序复制到另一个应用程序,两者都在同一台机器上运行。 我在两个应用程序中也使用下面的containerName相同的字符串。 是什么阻止我的新应用程序读取另一个应用程序中保存的密钥? 所有其他事情都是平等的,登录用户帐户等。 CspParameters cspParams = new CspParameters(); cspParams.KeyContainerName = containerName; cspParams.Flags = CspProviderFlags.UseMachineKeyStore; // Get error “object already exists” below. RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(cspParams);

System.Security.Cryptography与PCLCrypto

我们正在努力在我们的系统中挖掘大量共享function并将其移植到PCL库中。 我在使用PCLCrypto时遇到了问题。 我正在我们的数据库中获取一些现有数据,并尝试使用相同的算法对其进行解密。 我得到了值,但最后有16个额外的字节只是垃圾。 请参阅下面的代码: 使用System.Security.Cryptography的旧算法 public static string SymmetricEncrypt(this string plaintext, string key, SymmetricAlgorithm algorithm) { byte[] keyBuffer = Convert.FromBase64String(key.Hash(HashAlgorithm.MD5)); byte[] plainTextBuffer = Encoding.UTF8.GetBytes(plaintext); var symmetricAlgorithm = new AesCryptoServiceProvider(); symmetricAlgorithm.Key = keyBuffer; symmetricAlgorithm.Mode = CipherMode.ECB; var encryptor = symmetricAlgorithm.CreateEncryptor(); byte[] cipherBuffer = encryptor.TransformFinalBlock(plainTextBuffer, 0, plainTextBuffer.Length); symmetricAlgorithm.Clear(); return Convert.ToBase64String(cipherBuffer); } public static string SymmetricDecrypt(this string […]

加密c#和mysql之间的数据流量

我在C#.Net中有一个Windows应用程序,它使用mysql数据库来存储数据。 Mysql DB和Windows应用程序在同一台机器上。 我正在为我的工作中的系统进行安全审计,其中一个要求是加密C#和Mysql之间的所有流量。 我已经实现了openssl,连接现已加密,但我还需要加密c#和mysql之间的数据流量。 例如,当插入查询从c#执行时,数据包软件(echo mirage)显示明文(整个插入数据查询)可能是我的c#应用程序使用硬编码查询而不是存储过程的原因。 如何加密流量? 请帮忙

尝试使用Python从C#代码生成RSA签名

我正在使用别人的代码生成用于在xbox 360保存文件中进行validation的RSA签名。 代码从文件中读取所需的值并正确生成签名。 代码是: byte[] xHash=null; RSAParameters xParams = new RSAParameters(); br.BaseStream.Position = 0x1A8; xParams.D = br.ReadBytes(0x80); xParams.Exponent = br.ReadBytes(0x4); xParams.Modulus = br.ReadBytes(0x80); xParams.P = br.ReadBytes(0x40); xParams.Q = br.ReadBytes(0x40); xParams.DP = br.ReadBytes(0x40); xParams.DQ = br.ReadBytes(0x40); xParams.InverseQ = br.ReadBytes(0x40); br.close(); br=new BinaryReader(File.OpenRead(f)); br.BaseStream.Position=0x22c; xHash = new SHA1CryptoServiceProvider().ComputeHash(br.ReadBytes(0x118)); byte[] xrsa=SignatureGenerate(xParams, xHash); public static byte[] SignatureGenerate(RSAParameters xParam, byte[] […]