使用AES进行字符串解密 [英] String Decryption with AES
问题描述
Hiya,
我正在寻找一种使用AES解密字符串的方法.我有加密密码,还有高级加密标准向量.
这是我进行密码学的第一步,因此,我们将不胜感激!
有人提供任何建议吗?
Hiya,
I am looking for a way of decrypting a string with AES. I have the encryptedpassword and also the Advanced Encryption Standard Vector.
This is my first step with cryptography so any help would be much appreciated!
Anyone offer any advice?
推荐答案
也许会对您有帮助:
在C#中实施AES加密
Hi,
maybe it will help you:
Implementing AES encryption in C #
/// <summary> /// Encrypts a string /// </summary>
///Text to be encrypted
///Password to encrypt with
///Salt to encrypt with
///Can be either SHA1 or MD5
///Number of iterations to do
///Needs to be 16 ASCII characters long
///Can be 128, 192, or 256
/// <returns>An encrypted string</returns>
public static string Encrypt(string plainText, string password,
string salt = "Kosher", string hashAlgorithm = "SHA1",
int passwordIterations = 2, string initialVector = "OFRna73m*aze01xY",
int keySize = 256)
{
if (string.IsNullOrEmpty(plainText))
return "";
byte[] initialVectorBytes = Encoding.ASCII.GetBytes(initialVector);
byte[] saltValueBytes = Encoding.ASCII.GetBytes(salt);
byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes (password, saltValueBytes, hashAlgorithm, passwordIterations);
byte[] keyBytes = derivedPassword.GetBytes(keySize / 8);
RijndaelManaged symmetricKey = new RijndaelManaged();
symmetricKey.Mode = CipherMode.CBC;
byte[] cipherTextBytes = null;
using (ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initialVectorBytes))
{
using (MemoryStream memStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memStream, encryptor, CryptoStreamMode.Write))
{
cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
cryptoStream.FlushFinalBlock();
cipherTextBytes = memStream.ToArray();
memStream.Close();
cryptoStream.Close();
}
}
}
symmetricKey.Clear();
return Convert.ToBase64String(cipherTextBytes);
}
C#中AES解密的实现
The implementation of AES decryption in C #
/// <summary> /// Decrypts a string /// </summary>
///Text to be decrypted
///Password to decrypt with
///Salt to decrypt with
///Can be either SHA1 or MD5
///Number of iterations to do
///Needs to be 16 ASCII characters long
///Can be 128, 192, or 256
/// <returns>A decrypted string</returns>
public static string Decrypt(string cipherText, string password,
string salt = "Kosher", string hashAlgorithm = "SHA1",
int passwordIterations = 2, string initialVector = "OFRna73m*aze01xY",
int keySize = 256)
{
if (string.IsNullOrEmpty(cipherText))
return "";
byte[] initialVectorBytes = Encoding.ASCII.GetBytes(initialVector);
byte[] saltValueBytes = Encoding.ASCII.GetBytes(salt);
byte[] cipherTextBytes = Convert.FromBase64String(cipherText);
PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(password, saltValueBytes, hashAlgorithm, passwordIterations);
byte[] keyBytes = derivedPassword.GetBytes(keySize / 8);
RijndaelManaged symmetricKey = new RijndaelManaged();
symmetricKey.Mode = CipherMode.CBC;
byte[] plainTextBytes = new byte[cipherTextBytes.Length];
int byteCount = 0;
using (ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initialVectorBytes))
{
using (MemoryStream memStream = new MemoryStream(cipherTextBytes))
{
using (CryptoStream cryptoStream = new CryptoStream(memStream, decryptor, CryptoStreamMode.Read))
{
byteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
memStream.Close();
cryptoStream.Close();
}
}
}
symmetricKey.Clear();
return Encoding.UTF8.GetString(plainTextBytes, 0, byteCount);
}
在这里您可以阅读有关它的信息:
http://stackoverflow.com/questions/3226813/how-can-i-decrypt-a-string-using-aes-algorithm-in-c [ http://stackoverflow.com/questions/202011/encrypt-decrypt-string-in-net [ ^ ]
http://www.digizol.org/2009/10/java-encrypt- crypto-jce-salt.html [ ^ ]
问候,
亚历克斯
P/S.如果有帮助,请不要忘记投票:)
Here you can read about it:
http://stackoverflow.com/questions/3226813/how-can-i-decrypt-a-string-using-aes-algorithm-in-c[^]
http://stackoverflow.com/questions/202011/encrypt-decrypt-string-in-net[^]
http://www.digizol.org/2009/10/java-encrypt-decrypt-jce-salt.html[^]
Regards,
Alex
P/S. If it help you, do not forget to vote :)
我找到了一个示例 ^ ],这是Google上针对"c#aes"的第一个结果.
I found a sample here[^], first result on Google for "c# aes".
这篇关于使用AES进行字符串解密的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!