C# 如何在winrt中使用加密,您可以将字符串加密到指定长度的密码文本?

C# 如何在winrt中使用加密,您可以将字符串加密到指定长度的密码文本?,c#,azure,encryption,windows-runtime,uwp,C#,Azure,Encryption,Windows Runtime,Uwp,我正在创建一个WindowsUWP应用程序,我需要对字符串进行一些加密并将其插入azure表中。我尝试使用DataProtectionProvider.ProtectAsync()方法,该方法工作正常,只是加密字符串碰巧变得非常大。我想要一个加密,我可以指定加密字符串的长度。或者我的选择是什么 我要找的手术就是这样的 string encryptedText = encryptPlainText(plainText, password, encryptedTextSize); 编辑: 我的要求

我正在创建一个WindowsUWP应用程序,我需要对字符串进行一些加密并将其插入azure表中。我尝试使用
DataProtectionProvider.ProtectAsync()
方法,该方法工作正常,只是加密字符串碰巧变得非常大。我想要一个加密,我可以指定加密字符串的长度。或者我的选择是什么

我要找的手术就是这样的

string encryptedText = encryptPlainText(plainText, password, encryptedTextSize);
编辑: 我的要求是:
我试着按照toDo应用程序的思路创建一些东西。我使用Azure移动服务及其同步框架只是为了安全,我想对数据使用加密。但我知道我们只能在一列中保存64Kb的数据,因此我不希望加密占用大部分空间。我的选项是什么?

您不能随意设置密文的长度。它将是一个输入大小的函数,加上任何所需的填充、IV和签名/MAC

IIRC,对于类似AES-GCM的东西,您将有28个字节的额外扩展,12个字节用于IV,16个字节用于身份验证标签。此外,您可能希望对密文进行Base64编码,这会将其扩展4/3倍

由于对您的需求一无所知,您很可能不想使用
DataProtectionProvider
。它比DAPI更灵活,但我认为它仍然只使用Active Directory凭据或本地用户/计算机帐户进行加密。问题是,如果在本地帐户下受保护,您可能无法在其他计算机上解密


相反,你应该发布你的需求,这样人们就可以为你真正想要做的事情提供更好的建议

谢谢你的回复。我已经添加了我试图实现的细节。