如何以安全的方式将SecureString附加到SecureString

本文关键字:SecureString 方式 安全 | 更新日期: 2023-09-27 18:24:47

如何附加多个SecureString

因为我不能做

SecureString pepper 
SecureString salt
SecureString pepperAndSalt = pepper + salt;

如果我使用
SecureString.AppendChar(Char)
我必须将salt转换为一个不安全的char数组,这是我想要避免的。

如何以安全的方式将SecureString附加到SecureString

您不能1,根据定义:

请注意,SecureString没有检查、比较或转换SecureString值的成员。缺少这样的成员有助于保护实例的值不受意外或恶意暴露的影响。使用System.Runtime.InteropServices.Marsal类的适当成员(如SecureStringToBSTR方法)来操作SecureString对象的值。

一旦你得到了一个价值,你就不能把它拿出来。

1:除非您愿意通过使用Marshal.SecureStringToBSTR开始使用非托管代码,但这将违反SecureString的使用…

解决方法可以使用本答案中描述的System.Runtime.InteropServices.Marshal类将安全字符串转换为字符串,附加两个字符串,并将连接的字符串转换回安全字符串