Tag: 加密

查询字符串参数混淆

我想在ASP.NET中混淆一个查询字符串参数。 该站点将有大量请求,因此算法不应该太慢。 我的问题是我发现的所有算法都会产生不需要的字符(比如+ / =) 这是我想要实现的一个例子: www.domain.com/?id=1844 至 www.domain.com/?id=3GQ5DTL3oVd91WsGj74gcQ 混淆的参数应该只包括az和AZ以及0-9个字符。 我知道我可以使用base64加密,但这会生成不需要的字符,如/或=或+ 。 知道可以使用什么算法吗? 更新:我知道UrlEncoding,我想避免编码字符串。 因为这会在url中生成%F2或%B2等字符。

对称加密(AES):保存IV和Salt以及加密数据是否安全且正确?

在使用对称加密算法(在本例中为AES)加密和解密数据时,我试图理解如何处理和管理启动向量和盐(适用时)。 我从不同的SO线程和各种其他网站推断出,IV或盐都不需要保密,只是为了防御密码分析攻击,例如蛮力攻击。 考虑到这一点,我认为将伪随机IV与加密数据一起存储是可行的。 我问的是我使用的方法是否合适,而且,我是否应该以同样的方式处理我当前的硬编码盐? 那就是将它写在IV旁边的内存流中 我的代码: private const ushort ITERATIONS = 300; private static readonly byte[] SALT = new byte[] { 0x26, 0xdc, 0xff, 0x00, 0xad, 0xed, 0x7a, 0xee, 0xc5, 0xfe, 0x07, 0xaf, 0x4d, 0x08, 0x22, 0x3c }; private static byte[] CreateKey(string password, int keySize) { DeriveBytes derivedKey = new Rfc2898DeriveBytes(password, SALT, ITERATIONS); return derivedKey.GetBytes(keySize […]

.NET中的RSA加密/解密问题

我在使用RSA进行C#加密和解密时遇到问题。 我开发了一个Web服务,将发送敏感的财务信息和交易。 我希望能够做的是在客户端,使用客户端RSA私钥加密某些字段,一旦它到达我的服务,它将使用客户端公钥解密。 目前我不断得到一个“要解密的数据超过了这个128字节模数的最大值。” 例外。 我没有太多关于C#RSA加密技术,所以任何帮助都将非常感激。 这是我用来生成密钥的方法 private void buttonGenerate_Click(object sender, EventArgs e) { string secretKey = RandomString(12, true); CspParameters param = new CspParameters(); param.Flags = CspProviderFlags.UseMachineKeyStore; SecureString secureString = new SecureString(); byte[] stringBytes = Encoding.ASCII.GetBytes(secretKey); for (int i = 0; i < stringBytes.Length; i++) { secureString.AppendChar((char)stringBytes[i]); } secureString.MakeReadOnly(); param.KeyPassword = secureString; RSACryptoServiceProvider rsaProvider = […]

C#在写入磁盘之前加密序列化文件

假设我的程序有一个名为“customer”的类,客户类是可序列化的,所以我可以读取并写入磁盘。 客户类包含我想要加密的敏感信息,我知道可以保证文件安全的唯一方法是: 1 – 将文件序列化到磁盘 2 – 重新打开并加载文件 3 – 加密文件 4 – 将文件重写到磁盘 这样可行,但存在文件可能在其未加密状态下被截获的风险,而且这实际上是非常低效的。 相反,我想: 1 – 在内存中创建文件 2加密内存中的文件 3 – 将加密文件写入磁盘 这可能吗? 如果是这样的话? 提前致谢。

加密查询字符串,包括键

我有app使用查询字符串来传递页面周围的一些值,我发现几个关于如何加密查询字符串中的值的例子,但问题是我的KEYS告诉更多关于查询字符串然后将所有整数转换为字符串的值。 有没有办法加密ASP.NET中的整个查询字符串,包括键和键值? 就像是: Default.aspx?value1=40&value2=30&value3=20 至 Default.aspx?56sdf78fgh90sdf4564k34klog5646l 谢谢!

对大文件进行AES加密

我需要加密和解密大文件(~1GB)。 我尝试使用这个例子: http : //www.codeproject.com/Articles/769741/Csharp-AES-bits-Encryption-Library-with-Salt但我的问题是因为文件非常大,我得到outOfMemoryexception。 所以我需要用文件流替换内存流,我只是不知道该怎么做… (添加我的代码:) private static void AES_Encrypt(string srcFile, string encryptedFile, byte[] passwordBytes) { // Set your salt here, change it to meet your flavor: // The salt bytes must be at least 8 bytes. byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8}; FileStream fsInput = […]

这是在Db中加密和存储密码的方法吗?

有几种方式(即使在这里也是如此)并且他们都提到在数据库上保存密码的最佳方法是保存密码,而不是密码,而是存储盐渍密码的哈希值 。 我的问题很简单,把一些代码放在上面,这是正确的方法吗? string username = “myUsr”; string password = “myPwd”; DateTime createDate = DateTime.UtcNow; // Salt it string saltedPwd = String.Concat(password, createDate.Ticks.ToString()); // Hash it HMACSHA1 hash = new HMACSHA1(Encoding.Unicode.GetBytes(Helper.EncryptKey)); string encodedPwd = Convert.ToBase64String( hash.ComputeHash(Encoding.Unicode.GetBytes(saltedPwd))); // Create User in the database db.CreateUser(username, encodedPwd, createDate); 数据库用户表 user_id | username | password | create_date | last_access […]

在C#中解密PHP加密字符串

我有一个用PHP加密的字符串,我想在C#中解密。 我使用下面的教程进行加密,但是在解密时遇到了问题。 谁能发布一个如何做到这一点的例子? http://www.sanity-free.org/131/triple_des_between_php_and_csharp.html

使用AesCryptoServiceProvider获取不正确的解密值

我有以下代码使用AesCryptoServiceProvider进行加密和解密。 加密和解密使用的iv和key相同。 解密值仍然与源字符串不同。 解密后需要更正才能获得原始值? 当inputValue = valid128BitString时,此代码正在运行。 但是当inputString = “Test”我得到以下exception, Padding is invalid and cannot be removed. 。 我们怎样才能纠正它? 更新的问题 以下将根据@jbtule答案进行操作。 encyptedValue.IV = result.IV; 加密结果的IV值发生变化。 假设加密是在一个单独的过程中完成的,我们怎么知道IV用于解密? 有没有办法让它保持不变或已知? 答:您的另一个选择是通过IV进入加密并在开始加密转换之前分配它,而不是让aesProvider为您生成随机的。 – @Scott Chamberlain aesProvider.IV = Convert.FromBase64String(“4uy34C9sqOC9rbV4GD8jrA==”); 更新:请参阅如何为Base64应用填充 。 我们可以使用UTF8来编码源输入和结果输出。 密钥和IV可以保留在Base64 。 使用Base64进行源输入会导致某些值出现问题,例如“MyTest”,其中字符串的长度不是4的倍数 相关要点: 要解密使用其中一个SymmetricAlgorithm类加密的数据,必须将Key属性和IV属性设置为用于加密的相同值。 SymmetricAlgorithm.IV属性:来自前一个块的信息被混合到加密下一个块的过程中。 因此,两个相同的纯文本块的输出是不同的。 因为该技术使用前一个块来加密下一个块,所以需要初始化向量来加密第一个数据块。 (根据SymmetricAlgorithm.IV属性 MSDN文章) 有效密钥大小为:128,192,256位(根据我的AES方法为字节数组创建多少个字符? ) 主体计划 class Program { static void […]

如何安全地处理AES“密钥”和“IV”值

如果我使用AES(System.Security.Cryptography)简单地加密和解密SQL服务器中的blob或memo字段,那么我在哪里将“Key”和“IV”值存储在服务器上? (文件,Regkey,Dbase,……) 那些AES“Key”和“IV”值的保护是什么? 背景问题更多:如果“他们”攻击服务器并获得dbase ……那么他们可能也可以进入加密程序的程序(它在同一台服务器上,无法帮助它)…如果“他们”非常好,那么他们会注意到存储“Key”和“IV”值的位置……(.NET 4.5 ILSPY)并且所有内容都可以再次解密。 请指教? 你们如何处理AES“Key”和“IV”值? Ps:这不是关于pwd字段……所以,它不是关于散列…它的纯数据加密。