Tag: 3des

PHP和C#3DES加密

需要将以下函数从PHP转换为C#(asp.net) function encrypt_3DES($message, $key){ // Se establece un IV por defecto $bytes = array(0,0,0,0,0,0,0,0); //byte [] IV = {0, 0, 0, 0, 0, 0, 0, 0} $iv = implode(array_map(“chr”, $bytes)); //PHP 4 >= 4.0.2 // Se cifra $ciphertext = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv); //PHP 4 >= 4.0.2 return $ciphertext; } 其中$message是要编码的字符串, $key是键 $key是base 64编码的,在调用函数之前会被解码 […]

在C#中复制T-SQL DecryptByPassPhrase

我想创建一个C#类来解密使用T-SQL的EncryptByPassPhrase加密的字节数组。 (是的,我知道我可以在SQL Server中解密,但我需要的是能够在数据库层和中间层等效地加密/解密。) 据我所知,SQL Server的EncryptByPassPhrase和DecryptByPassPhrase使用TripleDES对称密钥算法。 但是,我不清楚IV应该模拟SQL Server的密码学。 我可以使用TripleDESCryptoServiceProvider类加密/解密,但是我找不到正确的key和IV实现来复制SQL Server正在做的事情。 有没有人做过类似的事情? 谢谢!

3DES密钥大小在C#.Net中很重要

下面的代码在c#.NET中运行良好 byte[] key = Encoding.ASCII.GetByte(“012345678901234567890123”); //24characters byte[] plainText = Encoding.ASCII.GetBytes(“lasaa”); TripleDES des = TripleDES.Create(); des.Key = key; des.Mode = CipherMode.CBC; ICryptoTransform ic = des.CreateEncryptor(); byte[] enc = ic.TransformFinalBlock(plainText, 0, plainText.Length); MessageBox.Show(UTF8Encoding.UTF8.GetString(enc)); 我对上面的问题是…… 如何指定KeySize? 如果我使用des.KeySize= 128或192或256它给出 指定的密钥不是此算法的有效大小 如果我通过添加更多来改变键中的字符长度(例如:40个字符)。 它给出了错误 指定的密钥不是此算法的有效大小 我想知道为什么会这样?