Tag: 加密

Rijndael 256在c#和php之间加密/解密?

更新 我已对C#代码进行了更改,因此它使用的块大小为256.但是现在hello世界看起来像这个http://pastebin.com/5sXhMV11而且我无法弄清楚我应该使用rtrim()来获取最后骑的烂摊子。 另外当你说IV应该是随机的时,你的意思是不要再使用相同的IV一次或者我编码错误的方式? 再次感谢! 嗨, 我正在尝试使用在C#中加密的PHP解密字符串。 我似乎无法让PHP使用mcrypt解密它,并且可以提供一些帮助。 我用php得到以下错误,所以我猜我没有正确设置IV。 错误:IV参数必须与块大小一样长 两个函数使用相同的密码,密钥,IV并设置为CBC模式: 来自c#的加密文本= UmzUCnAzThH0nMkIuMisqg == key 32 long = qwertyuiopasdfghjklzxcvbnmqwerty iv 16 long = 1234567890123456 C# public static string EncryptString(string message, string KeyString, string IVString) { byte[] Key = ASCIIEncoding.UTF8.GetBytes(KeyString); byte[] IV = ASCIIEncoding.UTF8.GetBytes(IVString); string encrypted = null; RijndaelManaged rj = new RijndaelManaged(); rj.Key = Key; rj.IV […]

加密/解密大文件(.NET)

我必须加密,存储然后解密大文件。 这样做的最佳方式是什么? 我听说RSA加密很昂贵,建议使用RSA加密AES密钥,然后使用AES密钥加密大文件。 任何带有示例的建议都会很棒。

C#加密到PHP解密

我正在尝试在C#中加密一些(cookie)数据,然后在PHP中解密它。 我选择使用Rijndael加密。 我几乎让它工作,除了只有部分文本被解密! 我从这个例子开始工作: 在C#中解密PHP加密字符串 这是我正在加密的文本(JSON)(删除了敏感信息): {“DisplayName”:”xxx”, “Username”: “yyy”, “EmailAddress”:”zzz”} 所以我登录到C#app,它从存储的Key和IV创建/编码cookie,然后重定向到应该解密/读取cookie的PHP应用程序。 当我解密cookie时,它出现如下: {“DisplayName”:”xxx”,”F A ; HP=D 4 z ť k #E R j 5 \ t. t D ” 更新 :我已经进一步了,这就是结果 string(96) “{“DisplayName”:”xxx”,”Username”:”yyy”,”EmailAddress” )ق – J k/VV-v 9 B`7^” 正如你所看到的,它开始解密它,但后来搞砸了…… 当解密字符串时它出来是正确的(使用填充,我有一个删除填充的函数),但是如果我将测试字符串改为一个字符,我会再次得到垃圾: B nHL Ek ¿? UΣlO OЏ M NO/ fM Lƾ CC Y>F ~ qd […]

以编程方式加密.​​NET中的配置文件

有人可以概述如何以编程方式加密.​​NET中的配置文件,最好是在C#中。 我想做的是对应用程序的启动进行某种检查以查看某个部分是否未受保护,如果是,则对其进行加密。 这适用于设置和连接字符串。 此外,如果任何人都可以列出加密提供商的类型,他们之间有什么区别。 我不知道在普通的WinForms应用程序中执行此操作的代码是否对在ASP.NET中执行此操作是透明的。

使用.NET类的OpenSSL加密

我正在寻找创建一个使用与OpenSSL兼容的.NET库的类。 我知道有一个OpenSSL.Net包装器,但我宁愿避免引用第三方\非托管代码。 我不是在寻找关于这是否是正确选择的讨论,但有理由。 目前我有以下内容,我认为应该与OpenSSL兼容 – 它有效地完成了我认为OpenSSL从OpenSSL文档中所做的事情。 但是,即使只使用此类进行加密和解密,我也会收到以下错误: [CryptographicException] Padding is invalid and cannot be removed. 我已经逐步完成了代码并validation了salt \ key \ iv在加密和解密过程中都是一样的。 请参阅下面的示例类和调用加密解密。 欢迎任何想法或指示。 public class Protection { public string OpenSSLEncrypt(string plainText, string passphrase) { // generate salt byte[] key, iv; byte[] salt = new byte[8]; RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); rng.GetNonZeroBytes(salt); DeriveKeyAndIV(passphrase, salt, out key, out […]

“填充无效,无法删除”使用AesManaged

我正在尝试使用AesManaged进行简单的加密/解密,但在尝试关闭解密流时我一直遇到exception。 这里的字符串被正确加密和解​​密,然后在Console.WriteLine输出正确的字符串后,我得到CryptographicException“Padding无效且无法删除”。 有任何想法吗? MemoryStream ms = new MemoryStream(); byte[] rawPlaintext = Encoding.Unicode.GetBytes(“This is annoying!”); using (Aes aes = new AesManaged()) { aes.Padding = PaddingMode.PKCS7; aes.Key = new byte[128/8]; aes.IV = new byte[128/8]; using (CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(rawPlaintext, 0, rawPlaintext.Length); cs.FlushFinalBlock(); } ms = new MemoryStream(ms.GetBuffer()); using (CryptoStream cs = new […]

.NET中的密码加密/解密代码

我希望在C#中简单加密和解密密码。 如何在数据库中以加密格式保存密码,并通过解密检索原始格式?

加密WPF应用程序中的凭据

在WPF应用程序中,我想提供典型的“记住我”选项来记住凭据,并在下次启动应用程序时自动使用它们。 使用单向散列显然不是一种选择,虽然我可以将凭据存储在独立存储或注册表中 ,但在加密凭据时有一个问题需要处理。 如果我使用对称密钥加密算法,我将需要将密钥存储在某处。 例如,如果密钥在内存中是硬编码的,那么我想可以很容易地反汇编.NET程序集并找到它。 在.NET中加密凭据并保持其安全性的最佳方法是什么,使加密密钥完全无法访问?

将图像转换为base64

我有以下代码将图像转换为base64: private void btnSave_Click(object sender, RoutedEventArgs e) { StreamResourceInfo sri = null; Uri uri = new Uri(“Checked.png”, UriKind.Relative); sri = Application.GetResourceStream(uri); BitmapImage bitmap = new BitmapImage(); bitmap.SetSource(sri.Stream); WriteableBitmap wb = new WriteableBitmap(bitmap); MemoryStream ms = new MemoryStream(); wb.SaveJpeg(ms, bitmap.PixelWidth, bitmap.PixelHeight, 0, 100); byte[] imageBytes = ms.ToArray(); base64 = System.Convert.ToBase64String(imageBytes); } 以下代码获取位图图像formsbase 64: public static BitmapImage […]

C#版本的OpenSSL EVP_BytesToKey方法?

我正在寻找OpenSSL EVP_BytesToKey函数的直接.NET实现。 我发现的最接近的是System.Security.Cryptography.PasswordDeriveBytes类(和Rfc2898DeriveBytes ),但它似乎略有不同 ,并且不生成与EVP_BytesToKey相同的密钥和iv 。 我也发现这个实现似乎是一个好的开始,但没有考虑迭代计数。 我意识到有OpenSSL.NET,但它只是本机openssl DLL的包装,而不是“真正的”.NET实现。