Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server格式保留加密_C#_Asp.net_Sql Server_Security_Encryption - Fatal编程技术网

C# SQL Server格式保留加密

C# SQL Server格式保留加密,c#,asp.net,sql-server,security,encryption,C#,Asp.net,Sql Server,Security,Encryption,我有一个带有数据库的旧系统,它的表的列类型为char(20),客户决定加密该列以满足某些业务需要,但是对于某些系统集成,需要输出列的长度与输入类似,即20,我已经读过 我的问题是,格式保留加密是否像AES方法一样强大,是否有任何SQL Server实现可以用于数百万条记录?您可以构建基于AES的安全格式保留加密。这是我对另一个问题的回答,其中我展示了使用AES作为构建块实现格式保留加密的代码。有关如何实现加密的详细信息,请参见斯坦福大学Boneh教授提供的关于格式保留加密的内容。FPE的问题是,

我有一个带有数据库的旧系统,它的表的列类型为char(20),客户决定加密该列以满足某些业务需要,但是对于某些系统集成,需要输出列的长度与输入类似,即20,我已经读过


我的问题是,格式保留加密是否像AES方法一样强大,是否有任何SQL Server实现可以用于数百万条记录?

您可以构建基于AES的安全格式保留加密。这是我对另一个问题的回答,其中我展示了使用AES作为构建块实现格式保留加密的代码。有关如何实现加密的详细信息,请参见斯坦福大学Boneh教授提供的关于格式保留加密的内容。

FPE的问题是,您无法判断字段是否已加密。它通常用于信用卡号,但如果它被盗,即使它不是原始号码,它仍然可以是有效的信用卡号,并被恶意用户使用

FPE
是否与
AES
一样强大?答案是肯定和否定。
FPE
在3个字符的字符串上的加密效果非常差,而如果在300个字符的字符串上使用,则可能会超过
AES 256
。但这将比AES的生成速度慢
AES
在加密时几乎具有稳定的速度,您可以根据字符串长度估计加密所需的时间,并且输出将可供人阅读/使用

下面的示例不是通过real加密运行的,只是为了说明区别:

姓名:
Frank Stall

使用
FPE加密

姓名:
Steve Moore

即使名称已成功加密,它仍然是一个有效值,可供想要窃取身份的人使用(请记住,这只是为了说明区别)。从结果中,您可以直观地看出该值是一个名称,但您自己即使知道它,也无法判断它是否加密

使用AES加密

名称:
WOa8+6KskFZ7IdNYgZ3+9BGDJrVfSVd61dDcX1JcVK8=


正如您可以看到的那样,如果您查看基本AES加密的结果,字符串长度不必匹配,则无法人工猜测该值是什么。你怎么知道这不是我的生日,我只是把名字放在那里。

FPE的问题是你无法判断字段是否被加密。它通常用于信用卡号,但FPE版本如果被盗,即使它不是原始号码,也可以是有效的信用卡号,因此被盗。FPE和AES一样强大吗?答案是肯定和否定的。3个字符字符串上的FPE加密效果很差,就像使用300个字符的字符串一样,那么我很确定它将超过AES 256。但这比AES生成的速度要慢。AES几乎有稳定的速度,输出不是人类可读/可使用的。非常感谢您的回复@Franck,我的情况是有20个字符需要加密,所以我认为它很小,但是我感兴趣的是,如果您可以指导我关于碰撞部分,而不是评论,您可以将上述评论作为答案发布“FPE版本的s信用卡号如果被盗,即使它不是原始号码,它仍然可以是有效的信用卡号,被恶意人士使用“这不是真的,在使用fpe之后,它就像一个无效的随机数。在16个整数中,碰撞发生在巧合中是非常困难的。罪犯可以直接尝试随机数,这仍然是徒劳的。@Samuel我当时确实提到过“它仍然可以是一张有效的信用卡”。我之所以这么说,是因为我们有一个在FPE上加密的城市公交通行证系统,我们有几个案例,我们收取了错误的信用卡费用,因为一些系统无法解密,并且使用了原始值,这些原始值也是有效的信用卡号,只是不是正确的每月用户。