Maarten Bodewes'对this question的评论表明AesCryptoServiceProvider.GenerateKey()
用于密钥生成是不安全的。
我们目前正在使用此方法生成加密安全密钥。查看Win32 API中的underlying implementation on Reference Source,GenerateKey()
调用CryptGenKey
。
我找不到任何暗示CryptGenKey
被泄露的资源。使用此实现是否安全?
答案 0 :(得分:2)
GenerateKey
非常安全,但关联问题的实施并非如此。
你无法调用Key = System.Text.Encoding.ASCII.GetString(provider.Key);
从随机字节数组中获取字符串,GetString
不能用于随机二进制数据,它只能用于调用{{{1}的字节数组。 1}}。如果要以字符串格式存储密钥,则需要使用用于存储二进制数据的格式,如ASCII.GetBytes