2012-06-24 51 views
2

我的加密应用程序(用C#编写的& GTK#和使用Rijndeal)从textview中取得一个字符串进行加密,并以Byte数组形式返回结果。然后我使用Encoding.Unicode.GetString()将其转换为字符串,但是我的输出看起来不正确,它似乎包含无效字符:`zźr[ ā ֖ Z _ W h 。Unicode字节数组中的Cryptotext似乎包含无效字符

我假设textview的编码不是Unicode,但ASCII也不起作用。我如何确保输出无效?或者,我的方法在开始时是错误的?我是新来的C#,并没有非常丰富的编程经验(我有很好的PHP技能,并且知道一点JavaScript,但是就是这样),所以如果你可以贬低你的答案,那将是非常值得赞赏的。

非常感谢您花时间帮助我。

+0

顺便说一句,当我将字节数组转换为ASCII时的输出是:?????? 3q ??'????? e1?d ??? G?^ u^BH – Razick

+1

不是真的,那?是由编码方法插入来表示它 - 呃 - 不能用ASCII表示的字符。 ASCII是一个字节中的7位,并且加密的输出通常是一个字节中的所有8位(或者,对于那些理解历史差异,从八位组开始)。 –

+0

我意识到这一点,我只是指出,输出不能用ASCII表示。感谢您的评论。 – Razick

回答

4

虽然每个字符串都可以表示为使用UTF-16的字节序列,但并非每个字节序列都表示一个UTF-16编码的字符串。特别是如果字节序列是加密过程的结果。

您可以使用Convert.ToBase64String Method将字节序列转换为Base64字符串。

+0

谢谢!那完全是这个把戏! – Razick

相关问题