c# - 使用 C# Windows Phone 下载加密的二进制文件丢失数据

标签 c# java encryption binary windows-phone-7.1

我需要从已使用 JAVA 加密的 URL 下载加密的 xml 二进制文件。我已成功在 JAVA 中加密该文件,然后将文件添加到我的 WP7 项目中并使用 C# 解密并成功将文件读取到我的应用程序中。

我现在需要将该文件存储在网络服务器上,以便应用程序可以访问它,但当我下载该文件时,我发现该文件不完整或格式不正确,并且解密不起作用。

我尝试使用 WebClient 和 HttpWebRequest,两者都给出了相同的结果。 xml 编码文件大约为 17000 字节,但从这两种方法下载的文件返回的文件长度约为 16000 字节。我认为下载的文件缺少行尾字符,但我无法验证这一点。我现在用来下载文件的代码非常简单,如下所示:

private void GetFile()
    {
        WebClient client = new WebClient();
        client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
        String url = "http://url/encodedfile.txt";            
        client.DownloadStringAsync(new Uri(url));

     }

    void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {

        string s = e.Result;

        byte[] encodedFile = System.Text.Encoding.UTF8.GetBytes(e.result);

        //decrypt file....

查看加密数据,它们看起来非常相似,但encodedFile的长度不是原始加密文件的正确长度。我已经对此进行了调试,并将encodedFile中的字符复制到TextPad中,全部在一行上。我不确定这是否是问题所在,但我到处都在寻找如何下载二进制文件,大多数建议是使用 HttpWebRequest 但我得到了完全相同的结果,所以我认为这不是问题。

感谢任何帮助。

最佳答案

DownloadString 将尝试将数据读取为 unicode 字符串。由于您正在下载二进制数据,因此输出不正确也就不足为奇了。尝试使用 WebClient.OpenReadAsync 代替:

private void GetFile()
{
    var webClient = new WebClient();

    webClient.OpenReadCompleted += OpenReadCompleted;

    string url = "http://url/encodedfile.txt";         

    webClient.OpenReadAsync(new Uri(url));
}

private void OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    // Decrypt the contents of e.Result
}

关于c# - 使用 C# Windows Phone 下载加密的二进制文件丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14412089/

相关文章:

c# - 如何从 MS SQL 数据表中检索列默认值

c# - 将屏幕捕获模拟为网络摄像头?

java - Spring 数据空刺

c# - 错误 RijndaelManaged, "Padding is invalid and cannot be removed"

php - 如何制作带有自定义字段的 PayPal 加密立即购买按钮?

c# - 适用于本地 Web 应用程序的 Azure Application Insight 遥测

c# - 使用 C# 在 MySQL 中使用 Select 和 Where 参数 = any\dontcare

java - 有界上下文在微服务世界中意味着什么?

java - 移位操作的意外结果

java.lang.ArrayIndexOutOfBoundsException : -85 java alogrithm