日期:2014-05-17  浏览次数:20798 次

谁解释一下 AES 加密算法的问题啊?
怎么 和我们 平时用的加密总是不一样呢?
问题一:怎么有Key和IV 两样东西?
问题二:怎么Key和IV是自动生成的吗,那意义何在呢?
问题三:我们平时日常应用的话,不就一个 password就好了吗。。。
谁介绍一下?
复制粘贴也可以,关键要清晰,清楚。。。
------最佳解决方案--------------------
IV是分组加密的中的内容。。不是自动生成的。
AES是分组加密的一种。
分组加密时,整个组加密成一组数据。由于分组长度一般很小,所以大数据会分成很多小组。每个小组分别使用Key加密,加密出另一个小组数据。 然后小组数据的拼接用IV(初始向量:由这个名字你就猜得到向量可能会不断变化)进行混乱化。。
我就是这么理解的。
------其他解决方案--------------------
 Key.Length <= 0)
                throw new ArgumentNullException("Key");
            if (IV == null 
------其他解决方案--------------------
引用:
IV是分组加密的中的内容。。不是自动生成的。
AES是分组加密的一种。
分组加密时,整个组加密成一组数据。由于分组长度一般很小,所以大数据会分成很多小组。每个小组分别使用Key加密,加密出另一个小组数据。 然后小组数据的拼接用IV(初始向量:由这个名字你就猜得到向量可能会不断变化)进行混乱化。。
我就是这么理解的。


可是MSDN上的例子,Key和IV都是自动生成的啊

其实,我就是很简单的需求,
加密的时候输入password和源字符串,得到加密的字符串,
解密的时候输入password和加密字符串,得到原字符串。


下面是MSDN上的例子,但是我觉得都很困惑。。。好像对我来说没有什么用处。。。


using System;
using System.IO;
using System.Security.Cryptography;

namespace Aes_Example
{
    class AesExample
    {
        public static void Main()
        {
            try
            {

                string original = "Here is some data to encrypt!";

                // Create a new instance of the AesCryptoServiceProvider
                // class.  This generates a new key and initialization 
                // vector (IV).
                using (AesCryptoServiceProvider myAes = new AesCryptoServiceProvider())
                {

                    // Encrypt the string to an array of bytes.
                    byte[] encrypted = EncryptStringToBytes_Aes(original, myAes.Key, myAes.IV);

                    // Decrypt the bytes to a string.
                    string roundtrip = DecryptStringFromBytes_Aes(encrypted, myAes.Key, myAes.IV);

                    //Display