Tag: 加密

从密码字符串派生加密密钥和IV时,可以使用密码的SHA1哈希作为盐吗?

我正在使用Rfc2898DeriveBytes从用户提供的字符串密码安全地生成加密密钥和初始化向量,以便与对称加密一起使用(例如AesManaged)。 我将密码的SHA1哈希作为盐参数提供给Rfc2898DeriveBytes 。 这可以吗? 如果没有,那么我应该从哪里获取盐? 解密时我需要相同的盐,对吧? 所以我必须将它存储在未加密的地方 – 不安全。 如果我必须安全地存储它,那么它只是成为另一个“密码”,不是吗? void SecureDeriveKeyAndIvFromPassword(string password, int iterations, int keySize, int ivSize, out byte[] key, out byte[] iv) { // Generate the salt from password: byte[] salt = (new SHA1Managed()).ComputeHash(Encoding.UTF8.GetBytes(password)); // Derive key and IV bytes from password: Rfc2898DeriveBytes derivedBytes = new Rfc2898DeriveBytes(password, salt, iterations); key = derivedBytes.GetBytes(keySize); […]

如何在javascript中加密url并在c#中解密

var url = “DocumentId=”+DocumentID+”&SectionType=1&RecID=”+RecipientID; window.open ( “../EBox/ShowLetter.aspx?Url=”+encodeURIComponent(url),’PrintMail’ , features ); 而不是编码我想要加密url。 这是什么解决方案?

对于AES算法名称,CryptDeriveKey失败

我正在尝试在我的应用程序中实现AES加密。 我有以下代码来创建用户密码的哈希版本。 PasswordDeriveBytes passwdHash = new PasswordDeriveBytes( password, salt, “SHA1”, 128 ); byte[] keyBytes = passwdHash.CryptDeriveKey( “AES”, “SHA1”, 192, iv ); 第二行抛出System.Security.Cryptography.CryptographicException ,错误消息Object identifier (OID) is unknown 。 我使用Reflectorvalidation错误是否被抛出,因为CryptDeriveKey()不喜欢“AES”算法名称(我使用AesCryptoServiceProvider()来执行加密)。 我尝试将名称更改为“AESManaged”,“AES192”和“Rijndael”,但它们都抛出相同的exception。 我如何让它工作? 或者是否有另一种导出关键字节的方法? 另外,是否有关于允许的算法名称字符串是什么的文档? 我在MSDN文档中找不到该function的任何内容。 我正在使用Visual Studio 2008并以.NET Framework 3.5为目标 在此先感谢您的帮助!

加密URL中的路由数据

在我的ASP.NET MVC应用程序中,我想加密路由数据而不是QueryString,换句话说: 我正在使用ASP.NET MVC默认路由模式: routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional }, namespaces: new[] { “WHATEVER” } ); 我有Action方法取id参数: public ActionResult Example(int id) { return View(); } 所以我的Url现在将数据传递给此Action方法是: /控制器/实施例/ 5 我希望这样 /控制器/实施例/ ENCRYPTEDPARAMTER 提前致谢

在.NET中使用Blowfish加密

我正在开展一个项目,我需要进行Blowfish加密和解密。 有没有其他人用它来做这个但却无法在.NET C#环境中找到任何东西? 理想情况下,我会喜欢不依赖于运行exe的东西,因为这最终将存在于exe服务器的实时服务器上! 我已经在SO上阅读了一些较旧的post,但没有什么合适的。 有任何想法吗? 谢谢

在开源应用程序中存储已保存的密码

我正在编写一个开源的C#应用​​程序,我需要能够为每个用户存储已保存的登录信息。 通常我只会加密密码,然后将其存储在用户设置文件中,但我担心由于代码是开源的,它有点无法加密它。 因为所有人都要做的就是查看代码并获取加密密钥。 当然,它至少会比以纯文本存储的密码更难。 但是有没有像加密密码的好方法,但即使你有源代码,它至少仍然非常难以解密? 也许这样做至少几乎不可能在除了加密的计算机之外的任何计算机上解密? 编辑:澄清……我正在存储客户端密码,而不是密码来validation他们的服务登录。 它是我无法控制的预先存在的Web服务的客户端。 我只是想在本地存储密码以便自动登录…就像任何聊天客户端一样。 编辑2:完全对不起之前不清楚。 但是密码必须在某些时候以明文检索并且哈希不是一个选项:(即使服务会让我传递密码哈希,这有点打败了目的,因为哈希会像密码一样好:P

C#BouncyCastle – 使用公钥/私钥进行RSA加密

我需要在C#中加密数据,以便将其传递给Java。 Java代码属于第三方但我得到了相关的源代码,因此我决定,当Java使用Bouncy Castle库时,我将使用C#端口。 解密工作正常。 但是,只有当我使用私钥加密而不使用公钥时,解密才有效。 使用公钥时,解密会因unknown block type失败。 显然, RsaEncryptWithPrivate的加密在加密时使用公钥,所以我不明白为什么这两种加密方法在function上不相同: using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Encodings; using Org.BouncyCastle.Crypto.Engines; using Org.BouncyCastle.OpenSsl; public class EncryptionClass { public string RsaEncryptWithPublic(string clearText , string publicKey) { var bytesToEncrypt = Encoding.UTF8.GetBytes(clearText); var encryptEngine = new Pkcs1Encoding(new RsaEngine()); using (var txtreader = new StringReader(publicKey)) { var keyParameter = (AsymmetricKeyParameter)new PemReader(txtreader).ReadObject(); encryptEngine.Init(true, keyParameter); } […]

加密.NET二进制序列化流

我在C#学习加密,我遇到了麻烦。 我有一些Rijndael加密代码 ,它与字符串完美配合。 但现在我正在研究序列化,而BinaryWriter在没有任何保护的情况下写入类的数据。 我正在使用此代码进行测试 ; 有没有办法“加密类”,或类似的东西? 为了澄清这个问题,这是我的代码: FileStream file = new FileStream(Environment.CurrentDirectory + @”\class.dat”, FileMode.Create); using (BinaryWriter sw = new BinaryWriter(file)) { byte[] byt = ConverteObjectEmByte(myVarClass); sw.Write(byt); } 这就是我读它的方式: MyClass newMyVarClass; FileStream file = new FileStream(Environment.CurrentDirectory + @”\class.dat”, FileMode.Open); using (BinaryReader sr = new BinaryReader(file)) { // 218 is the size of the byte […]

我如何使用ConvertTo-SecureString

假设我需要在Powershell中执行此操作: $SecurePass = Get-Content $CredPath | ConvertTo-SecureString -Key (1..16) [String]$CleartextPass = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($CredPass)); $ CredPath的内容是一个包含ConvertFrom-SecureString -Key(1..16)输出的文件。 如何在C#/ .NET中完成ConvertTo-SecureString -key (1..16)部分? 我知道如何创建SecureString ,但我不确定应该如何处理加密。 我是否使用AES加密每个字符,或者解密字符串然后为每个字符创建一个安全字符串? 我对密码学几乎一无所知,但从我收集的内容中我可能只想用C#调用Powershell命令。 作为参考,我在这里发现了一篇关于AES加密/解密的类似post: 在C#中使用AES加密 UPDATE 我已经回顾了Keith发布的链接 ,但我还面临其他未知数。 DecryptStringFromBytes_Aes有三个参数: static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV) 第一个参数是字节数组表示加密文本。 这里的问题是,如何在字节数组中表示字符串? 它应该用或不用编码来表示? byte[] ciphertext = Encoding.ASCII.GetBytes(encrypted_text); byte[] ciphertext = Encoding.UTF8.GetBytes(encrypted_text); byte[] ciphertext = Encoding.Unicode.GetBytes(encrypted_text); byte[] ciphertext = […]

c#encrypt xml文件

告诉我加密XML文件的最简单方法。 它是一个用于某些配置的文件,不希望人们乱用它。 安全性不是问题,因为它是一种私有工具。