我正致力于在Windows Phone 8项目的PCL中解密字符串(从数据库中读取)。以下是场景:
具有3个项目的解决方案, Windows phone UI , Windows Phone便携式类库和类库。
类库项目有一个 StringDecryption 类,其中包含以下代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace DecryptString
{
public class StringDecryption
{
public string Decryption(string encryptedTExt)
{
var protectedText = this.ReadEncryptedData(encryptedTExt);
// Decrypt the text by using the Unprotect method.
var textByte = ProtectedData.Unprotect(protectedText, null, DataProtectionScope.CurrentUser);
// Convert the text from byte to string and display it in the text box.
return Encoding.UTF8.GetString(textByte, 0, textByte.Length);
}
public byte[] ReadEncryptedData(string text)
{
var reader = new StreamReader(text).BaseStream;
var textArray = new byte[reader.Length];
reader.Read(textArray, 0, textArray.Length);
reader.Close();
return textArray;
}
public string Getname()
{
return "MyName";
}
}
}
我将这个类库中的dll引用到Portable类库,当从这个库调用方法Decryption时,它抛出 System.IO.FileNotFoundException 但是当我调用 Getname 方法。来自异常的完整消息是无法加载文件或程序集' System.Security,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其中一个依赖项。系统找不到指定的文件。
有没有办法解决这个问题或以其他方式加密或解密PCL中的字符串?
提前致谢。
答案 0 :(得分:1)
听起来您正在引用“便携式类库”中的“类库”。这不受支持 - 类库仅支持一个平台(可能是完整的.NET Framework),因此它不会在您的可移植类库所针对的其他平台上运行。
有没有办法解决此问题或任何其他加密方式或 解密PCL中的字符串??
我建议您查看PCL Crypto库。
有关我认为可以为您提供帮助的更多一般信息,请参阅我的博文:How to Make Portable Class Libraries Work for You