标签: data-integrity

一个合适的散列函数来检测数据损坏/检查数据完整性?

什么是用于检测损坏的文件完整性检查(校验和)的最合适的哈希函数?

我需要考虑以下几点:

广泛的文件大小(1 kb到10GB +)
许多不同的文件类型
大量文件(+/- 100 TB和不断增长)

较大的文件是否需要更高的摘要大小(SHA-1与SHA 512)?

我看到SHA系列被称为加密哈希函数.它们是否不适合"通用"用途,例如检测文件损坏?像MD5或Tiger这样的东西会更好吗?

如果恶意篡改也是一个问题,你的答案会改变最合适的哈希函数吗?

外部库不是一个选项,只有Win XP SP3 +上可用.

当然,性能也值得关注.

(请原谅我的术语,如果不正确,我对这个问题的了解非常有限).

hash checksum file corruption data-integrity

11
推荐指数
1
解决办法
3723
查看次数

不受信任的约束

令我惊讶的是,我刚刚得知外键约束可能是不可信的.使用时添加约束时会发生这种情况WITH NOCHECK.当约束不受信任时,查询分析器不会将其用于查询计划生成.

请参阅:https:
//sqlserverfast.com/blog/hugo/2007/03/can-you-trust-your-constraints/

我的问题是这个.当一个约束是不可信的时,我可以检查的约束上有一个属性告诉我这个吗?我想我可以检查是否使用WITH NOCHECK添加约束,但是还有其他方法可以将约束标记为不可信吗?

sql-server data-integrity

9
推荐指数
1
解决办法
261
查看次数

什么是用于数据完整性和重复数据删除的最佳散列算法?

我试图在其中散列大量具有二进制数据的文件,以便:(1)检查将来的损坏,以及(2)消除重复文件(可能具有完全不同的名称和其他元数据).

我知道md5和sha1及其亲属,但我的理解是这些是为安全而设计的,因此故意减慢以降低暴力攻击的效力.相比之下,我希望算法尽可能快地运行,同时尽可能减少冲突.

有什么建议?

hash data-integrity deduplication

9
推荐指数
1
解决办法
6370
查看次数

SQLite3的数据库文件在突然断电或操作系统崩溃时会被损坏吗?

我打开数据库文件并使用sqlite3的open()方法获取数据库连接,并且在程序退出之前连接不会关闭.如果发生意外错误,例如计算机突然断电或操作系统崩溃,数据库文件的模式是否会损坏,或者其句柄丢失?更具体地说,如果我重启计算机,它是否可以保持可写状态?顺便说一句,我不关心错误发生时的数据丢失.

非常感谢你!

sqlite crash fault-tolerance acid data-integrity

8
推荐指数
1
解决办法
3988
查看次数

困境:级联删除或加入删除

这不是一个特定的问题,更多的是一般的疑惑.

当您必须以1:M关系对多个表进行删除时,最好是使用级联删除制作FK约束还是连接delete语句中的表.

我有一个旧项目,它有相关表的单独删除语句,有些语句没有执行,数据完整性受到损害.我不得不在两者之间做出决定,所以我想了一下什么是更好的解决方案.

还可以选择进行存储过程或事务.

所以我正在寻找意见或建议......?

mysql sql rdbms data-integrity

8
推荐指数
2
解决办法
737
查看次数

没有UDF的SQL检查约束

我有以下(虚构)表:

??????????????????????        ??????????????????????
? Course             ?        ? Person             ?
??????????????????????        ??????????????????????
? ID   ? int         ?        ? ID   ? int         ?
? Name ? varchar(50) ?        ? Name ? varchar(50) ?
??????????????????????        ??????????????????????

??????????????????????        ???????????????????????
? Occupation         ?        ? B_Occupation_Person ?
??????????????????????        ???????????????????????
? ID   ? int         ?        ? Person_ID    ? int  ?
? Name ? varchar(50) ?        ? Ocupation_ID ? int  ?
??????????????????????        ???????????????????????

???????????????????
? B_Course_Person ?
???????????????????
? Course_ID ? int ?
? Person_ID ? int ? …
Run Code Online (Sandbox Code Playgroud)

sql data-integrity user-defined-functions check-constraint

7
推荐指数
1
解决办法
589
查看次数

使用服务器端加密上传到S3期间的数据完整性检查

数据完整性检查是AWS Java SDK声称它默认提供的内容,客户端可以自己计算对象校验和,并在S3客户端中将其添加为标头"Headers.CONTENT_MD5",或者如果我们将其作为null传递或者不设置它,S3客户端在内部计算客户端本身的MD5校验和,它用它来比较从对象创建响应中获得的Etag((除了创建对象的MD5)以将错误返回到在数据完整性失败的情况下客户端.请注意,在这种情况下,完整性检查发生在客户端而不是S3服务器端,这意味着仍然会成功创建对象,客户端需要清理它明确.

因此,建议使用标头(检查发生在S3端本身并提前失败)但由于TransferManager使用部件上载,客户端无法为特定部件显式设置MD5.传输管理器应该负责计算部件的MD5并设置标头,但我不会在代码中看到这种情况.

由于我们希望使用Transfer Manager进行多部分上传,因此我们需要依赖于默认情况下启用的客户端检查.但是,也有一个警告.当我们在S3中的对象上启用SSE-KMS或SSE-C时,将跳过此数据完整性检查(正如它们在代码中的一个注释中所提到的那样),在这种情况下,接收到密文的MD5来自S3,无法通过在客户端计算的MD5进行验证.

我应该使用什么来启用S3中的SSE进行数据完整性检查?

注意:请验证上述理解是否正确.

amazon-s3 data-integrity amazon-web-services aws-sdk

7
推荐指数
0
解决办法
824
查看次数

采用NOSQL方法时数据完整性的重要性?

我几乎完成了一个大型应用程序; 几天前,我看到Martin Fowler关于"NOSQL"的演讲.之后我意识到我一直在使用Mongo作为关系数据库,所以我决定重构我的模式.但是,我从一个来自"RDBMS"世界的人那里听到了很多关于诚信的内容; 我真的明白它有多重要,在"NOSQL"引擎中可以实现数据完整性吗?

更明确一点,这是一个简单的例子:

比方说,我有一个product,inventory在我的系统实体,

在我的inventory参考product_id中定义产品,

目前inventory我的mongo系列看起来像这样
{'inventory' :{'product_id' : '1', 'count' : 15}}

那么我可以inventory在我的系统中存储这样的东西:
{'inventory' :{'product' : {'id' : 1, 'name' : 'book'}, 'count' : 15}}
并且仍然可以实现数据完整性吗?如果我更改产品的名称_id : 1product的实体,然后发生什么事-我将循环更新所有的inventory收藏?

data-integrity mongodb nosql database-schema

6
推荐指数
1
解决办法
4741
查看次数

蓝牙串行端口通信 (SPP)

我们正在开发一个通过蓝牙使用 SPP(串行端口配置文件)的应用程序,开发人员正在讨论使用某种类型的协议和数据包传输,还是仅在没有任何形式的 ACK、序列或大小信息的情况下流式传输数据。

蓝牙是否提供有保证的传输和数据完整性,以便我们不需要数据包协议设计的开销?

我们可以仅依靠蓝牙来确保数据传输吗?

protocols bluetooth transmission data-integrity spp

6
推荐指数
2
解决办法
4588
查看次数

即使卸载应用程序然后重新安装,Room 也无法验证数据完整性

我已向现有数据库添加了一些新实体(表)。因此在数据库配置中配置了这些-

@Database(entities = {existingTable1.class, existingTable2.class, existingTable3.class, existingTable4.class,
        newTable1.class, newTable2.class
        }, version = 1, exportSchema = false)
Run Code Online (Sandbox Code Playgroud)

由于该应用程序处于开发阶段,我用来避免迁移。因此,我已从设备中卸载该应用程序并通过 Android Studio(运行)进行安装。但它给出了以下错误-

Room 无法验证数据完整性。您似乎已更改架构但忘记更新版本号。您可以通过增加版本号来简单地解决此问题。

在我的清单中,allowBackup 设置为 false,如下所示-

android:allowBackup="false"
Run Code Online (Sandbox Code Playgroud)

编辑

我有一件事要提。我在 asset 文件夹中有一个 sqlite 数据库文件。我只是在安装时将其复制到相应的应用程序数据库文件夹中。因此,当需要添加包含大量预填充数据的新表时,我只需更新 asset 文件夹中的 sqlite 数据库文件,然后调整相关实体并构建/运行项目。这样,它工作得很好,但这次却产生了这个问题。

android data-integrity android-room

6
推荐指数
1
解决办法
4840
查看次数