我知道有几个与此相关的问题,但是大多数答案都提供了.NET4.0及以上版本的解决方案。对于我的用途,我必须以.NET3.5为目标。我想简单地加密和解密一个字符串存储在一个文件中,所讨论的文本不是敏感的用户/个人信息。
public static string EncryptString(this string text)
{
string result = null;
if(!String.IsNullOrEmpty(text))
{
byte [] plaintextBytes = Encoding.Unicode.GetBytes ( text );
SymmetricAlgorithm symmetricAlgorithm = DES.Create ();
symmetricAlgorithm.Key = new byte [8] { 1, 2, 3, 4, 5, 6, 7, 8 };
MemoryStream memoryStream = new MemoryStream ();
CryptoStream cryptoStream = new CryptoStream ( memoryStream, symmetricAlgorithm.CreateEncryptor (), CryptoStreamMode.Write );
cryptoStream.Write ( plaintextBytes, 0, plaintextBytes.Length );
result = Encoding.Unicode.GetString ( memoryStream.ToArray () );
}
return result;
}
public static string DecryptString(this string text)
{
string result = null;
if ( !String.IsNullOrEmpty ( text ) )
{
byte [] encryptedBytes = Encoding.Unicode.GetBytes ( text );
SymmetricAlgorithm symmetricAlgorithm = DES.Create ();
symmetricAlgorithm.Key = new byte [8] { 1, 2, 3, 4, 5, 6, 7, 8 };
MemoryStream memoryStream = new MemoryStream ( encryptedBytes );
CryptoStream cryptoStream = new CryptoStream ( memoryStream, symmetricAlgorithm.CreateDecryptor (), CryptoStreamMode.Read );
byte [] decryptedBytes = new byte [encryptedBytes.Length];
cryptoStream.Read ( decryptedBytes, 0, decryptedBytes.Length );
result = Encoding.Unicode.GetString ( decryptedBytes );
}
return result;
}
CryptographicException:错误的PKCS7填充。长度0无效。
我想出的答案需要对代码进行彻底修改,但效果很好,它是:
public static string EncryptString(this string text, string passPhrase)
{
string result = null;
if(!String.IsNullOrEmpty(text))
{
byte [] initVectorBytes = Encoding.UTF8.GetBytes ( m_InitVector );
byte [] plainTextBytes = Encoding.UTF8.GetBytes ( text );
PasswordDeriveBytes password = new PasswordDeriveBytes ( passPhrase, null );
byte [] keyBytes = password.GetBytes ( m_Keysize / 8 );
RijndaelManaged symmetricKey = new RijndaelManaged ();
symmetricKey.Mode = CipherMode.CBC;
ICryptoTransform encryptor = symmetricKey.CreateEncryptor ( keyBytes, initVectorBytes );
MemoryStream memoryStream = new MemoryStream ();
CryptoStream cryptoStream = new CryptoStream ( memoryStream, encryptor, CryptoStreamMode.Write );
cryptoStream.Write ( plainTextBytes, 0, plainTextBytes.Length );
cryptoStream.FlushFinalBlock ();
byte [] cipherTextBytes = memoryStream.ToArray ();
memoryStream.Close ();
cryptoStream.Close ();
result = Convert.ToBase64String ( cipherTextBytes );
}
return result;
}
而且
public static string DecryptString(this string text, string passPhrase)
{
string result = null;
if ( !String.IsNullOrEmpty ( text ) )
{
byte [] initVectorBytes = Encoding.UTF8.GetBytes ( m_InitVector );
byte [] cipherTextBytes = Convert.FromBase64String ( text );
PasswordDeriveBytes password = new PasswordDeriveBytes ( passPhrase, null );
byte [] keyBytes = password.GetBytes ( m_Keysize / 8 );
RijndaelManaged symmetricKey = new RijndaelManaged ();
symmetricKey.Mode = CipherMode.CBC;
ICryptoTransform decryptor = symmetricKey.CreateDecryptor ( keyBytes, initVectorBytes );
MemoryStream memoryStream = new MemoryStream ( cipherTextBytes );
CryptoStream cryptoStream = new CryptoStream ( memoryStream, decryptor, CryptoStreamMode.Read );
byte [] plainTextBytes = new byte [cipherTextBytes.Length];
int decryptedByteCount = cryptoStream.Read ( plainTextBytes, 0, plainTextBytes.Length );
memoryStream.Close ();
cryptoStream.Close ();
result = Encoding.UTF8.GetString ( plainTextBytes, 0, decryptedByteCount );
}
return result;
}
我感兴趣的是构建一个个人使用的小应用程序,它将使用JavaScript在客户端加密和解密信息。加密的信息将存储在服务器上的数据库中,但不会存储解密的版本。 它不一定要是超级duper安全的,但我想使用一个当前未中断的算法。 理想情况下我可以做一些 生成编码字符串,以及类似于 以后再解码。 到目前为止,我已经看到了以下内容:http://bitwiseshiftleft.github.io/sjcl
问题内容: 我是密码学的新手。我希望学习如何在文件中加密和解密文本……当我在net中引用相关文章时。我怀疑对同一文本进行多次加密后,单个文本的加密文本是否会相同?谁能解决我的疑问? 问题答案: 这是使用该类的示例:
问题内容: 我的意思是: 也许像: 在PHP中,您该怎么做? 尝试使用 ,但对我不起作用。 问题答案: 更新 PHP 7就绪版本。它使用PHP OpenSSL库中的openssl_encrypt函数。
我想使用chacha20解密和加密字符串 BouncyCastleProvider正在使用chacha20技术。所以我包括了罐子。并尝试了代码,但无法工作。 pbe.java
我的意思是: 可能是这样的: null 尝试使用,但对我不起作用。
我将我的. net webapi移植到. net core webapi。在我使用的旧代码中 为此,我使用了库 但在移植到.net core之后,我面临的问题是: 对此的解决方案是什么?