我正在使用TripleDESCryptoServiceProvider
并且需要存储加密密钥。
如果我调用 providersGenerateKey
方法,这只是一个 base64 编码的字符串吗?如果是这样,我可以安全地取消编码,例如使用生成的字符串作为键吗?
稍微不同的是,在进行单向哈希时,使用相同的密钥作为盐密钥有什么问题吗?我正在为.net 编写一个简单的会员提供程序,它允许用户选择加密技术(普通、哈希、加密),所以想知道是否有必要让用户同时指定盐密钥和加密密钥。
我正在使用TripleDESCryptoServiceProvider
并且需要存储加密密钥。
如果我调用 providersGenerateKey
方法,这只是一个 base64 编码的字符串吗?如果是这样,我可以安全地取消编码,例如使用生成的字符串作为键吗?
稍微不同的是,在进行单向哈希时,使用相同的密钥作为盐密钥有什么问题吗?我正在为.net 编写一个简单的会员提供程序,它允许用户选择加密技术(普通、哈希、加密),所以想知道是否有必要让用户同时指定盐密钥和加密密钥。
调用GenerateKey将生成一个新的、随机的、安全的(即不弱的)密钥。它的长度(128 或 192)将取决于您TripleDESCryptoServiceProvider
的设置方式。
如果我调用提供者的 GenerateKey 方法,这只是一个 base 64 编码的字符串吗?
格式本身是一个byte[]
数组,因为您只能从Key
属性中检索它 - 所以它不是base64,但如果您愿意,可以很容易地以这种方式编码,例如Convert.ToBase64String(algo.Key);
如果是这样,我可以安全地取消编码,例如使用生成的字符串作为键吗?
您不能将字符串用作键 - 除非您将其转换回byte[]
. 但是,您可以在其使用之间将密钥保留为字符串(如果这对您的应用程序有任何帮助)。
稍微不同的是,在进行单向哈希时,使用相同的密钥作为盐密钥有什么问题吗?
如果您使用随机数据作为密钥 或盐,那么应该没有问题。只是不要对(和)使用相同的数据。
稍微不同的是,在进行单向哈希时,使用相同的密钥作为盐密钥有什么问题吗?
盐是公共参数;并且私钥和对称密钥应该是秘密的。
我正在为.net 编写一个简单的会员提供程序,它允许用户选择加密技术(普通、哈希、加密),所以想知道是否有必要让用户同时指定盐密钥和加密密钥。
We would need to see more information on the scheme before answering. In general, I would not feel comfortable allowing a user to choose formats or parameters (other than a password).