2016-03-09 47 views
0

我的任务是想出一种方法将我们公司的数据库更改为符合FIPS 140-2标准。我们主要是微软商店,目前有一个加密库,利用RijndealManaged来执行我们的加密/解密。涉及到多种环境,所以无论我想出什么解决方案,都需要在独立机器上对同一个消息进行加密/解密(所以我不认为我可以使用依赖OS的AESCryptoProvider等.net库)C#FIPS 140-2加密

我对加密技术没有深入的理解或背景,但是我已经完成了对这一点的研究,但我知道AES仍然是符合FIPS 140-2的算法。我的问题是:是否有更新的.NET AES Managed模块,我可以在这些环境中使用FIPS 140-2兼容? AESManaged模块是否只需要我以特定方式(即256个密钥大小和128个块大小)对其进行配置,以符合FIPS标准?

我不能使用第三方库。

+0

不要浪费时间与FIPS-140。这是太复杂和太昂贵的“事情”。 – i486

+2

问题是使用符合NIST认证的FIPS兼容算法。微软只有NIST认证OS内置的算法(因为认证是一个昂贵/漫长的过程)。任何不使用操作系统算法的框架(.Net或其他)都不符合NIST认证的FIPS标准。因此,本质上,RijndealManaged符合FIPS(与OS中的算法完全相同),但它不是NIST认证的。 – Kevin

+0

请参阅http://stackoverflow.com/a/939106/613130 – xanatos

回答

2

只要安装的.Net Framework为3.5以上,包装NIST认证FIPS 140-2兼容算法的类将可用。

诀窍是在一台机器上加密并在另一台机器上解密,你必须使用相同的密钥和初始化向量值。

您应该可以简单地使用对AESCryptoServiceProvider类的相同调用将库中的调用替换为RijndaelManaged类。