2011-11-03 105 views
0

编辑。尝试使用AES加密/解密。进度== null;

我想我有一个问题,创造一个正确的输入到加密/解密方法:这些代码行做的伎俩:

 string encrypted = en.Encrypt(stringBuilder.ToString(), "username", "password"); 
     string decrypted = en.Decrypt(encrypted, "username", "password"); 

     mainWindow.ChangeTextBox = encrypted + Environment.NewLine + decrypted; 

我只是玩弄,并试图找出如何加密/通过使用AES工作来解密。我指的是这个article(几乎复制和粘贴:(试图学习)。

在那里,他们给我完整的加密/解密方法,我试图修改。我想通过一个由。ArrayList中,然后用字符串生成器绑定好像我能够对数据进行加密,但解密会导致错误:

Length of the data to decrypt is invalid. 

在与代码行:

ByteCount = CryptoStream.Read(PlainTextBytes, 0, PlainTextBytes.Length); 

我怎样才能实现这个代码是有用的我的程序正常工作?

问候。

+0

您可以将您的代码编辑到证明该问题所需的最低限度吗?这是很多代码。 – Amy

+0

是否有可能说什么参数(明文,密文,通过,usrName)导致该异常? – ordag

+0

@ordag:'PlainTextBytes.Length'似乎是问题所在。 – HelpNeeder

回答

1

我还没有仔细查看代码的细节,但看起来在调用EncryptDecrypt时参数的顺序与方法的定义不匹配。在对这些方法的调用中,您似乎有用户名,密码,普通/密文;而这些方法的签名为明文/密文,密码,用户名为

+0

是的,我意识到这一点,并在发布问题后对其进行了更改。让我的方法参数格式正确,我仍然得到相同的错误。 – HelpNeeder

+0

你是对的!我错误地解释了你的问题!我用不正确的行编辑了我的OP。 – HelpNeeder

1

我是正确的,它是由空白或空字符串作为纯文本? ;-)
"lol1"不能解密,因为它不是一个有效的密文长度(填充!)不要说它没有任何意义。

+0

那么,如果我删除文本并保留为空字符串,它仍然会导致问题。 – HelpNeeder

+0

@HelpNeeder:如果你删除了什么? – ordag