我需要从用户那里收集一串敏感信息。我正在使用WPF
PasswordBox
请求此信息。对于新手来说
密码箱
控件提供了
SecurePassword
作为
SecureString
对象而不是不安全的
string
对象在我的应用程序中,来自
密码箱
作为
SecureString
加密方法。
我需要能够做的是将数据封送到一个字节数组,该数组本质上表示一个。网
值,而不首先将数据转换为。网
一串
. 更具体地说,假设
SecureString
值为。。。
wen jian efghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz1234567890 ` ~!@#$%^&*()_-+={[}]|:;“'<,>/
âç¯æ¯
...如何将其转换为等效于的字节数组。Net字符串,该字符串已序列化并写入具有
StreamWriter
?
通过使用
Marshal.SecureStringToCoTaskMemUnicode(...)
我可以用更传统的西方文本来实现这一点。然而,当我使用额外的非典型字符和日语文本字符串(见最后几个粗体字符)创建上述文本字符串时,我获得分配给
IntPtr
这个位置似乎不再正常工作了。
如何发出
SecureString
以安全的方式,使返回的字节数据的结构与标准的字节数据相同。Net字符串,序列化为二进制输出?
注释
请暂时忽略所有安全问题。我正在对我的应用程序进行各种安全升级。现在,我需要使用
SecureString
用于将敏感数据传输到加密机。解密程序(目前)仍需要将此数据解密到
一串
值,这就是为什么我需要了解如何序列化
SecureString
转换为与的二进制格式类似的二进制格式
一串
对象
我同意这种方法有点不幸,但是,我必须对现有应用程序进行增量改进,第一阶段是锁定中的数据
SecureString
从用户到加密程序的对象。