使用AES进行字符串解密 [英] String Decryption with AES

查看:95
本文介绍了使用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 :)


我找到了一个示例
I found a sample here[^], first result on Google for "c# aes".


这篇关于使用AES进行字符串解密的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆