我正在尝试为SQL Server 2008中的整个表计算校验和或散列.我遇到的问题是该表包含XML列数据类型,不能由校验和使用,必须转换为nvarchar第一.所以我需要将其分解为两个问题:
CRC32和CRC32C有什么区别?我知道CRC32很长一段时间了,但今天刚听说CRC32C.它们基本上是相同的方法(即两者都导致给定数据的相同哈希)?
有没有办法在Qt中获取磁盘上文件的MD5或SHA-1校验和/哈希?
例如,我有文件路径,我可能需要验证该文件的内容是否与某个哈希值匹配.
我正在开发一个应用程序,用户必须拨打电话并使用手机键盘输入验证码.
我希望能够检测出他们输入的数字是否正确.电话系统无法访问有效号码列表,而是根据算法(如信用卡号码)验证号码.
以下是一些要求:
鉴于这些要求,您将如何生成这样的数字?
编辑:
@Haaked:代码必须是数字的,因为用户用它的电话键入它.
@matt b:第一步,代码显示在网页上,第二步是调用并输入代码.我不知道用户的电话号码.
Folowup:我发现了几种算法来检查数字的有效性(参见Google代码项目:checkDigits).
我有兴趣优化一些大文件的散列(优化挂钟时间).I/O已经进行了足够的优化,I/O设备(本地SSD)仅以大约25%的容量进行分流,而其中一个CPU内核完全超出.
我有更多核心可用,将来可能会有更多核心.到目前为止,如果我碰巧需要同一个文件的多个哈希值,我只能使用更多内核,同时说MD5和SHA256.我可以使用相同的I/O流来提供两个或更多哈希算法,并且我可以免费获得更快的算法(就挂钟时间而言).据我了解大多数哈希算法,每个新位都会改变整个结果,而且并行地具有挑战性/不可能性.
是否有任何主流哈希算法可并行化?
是否存在可并行化的非主流哈希(并且至少具有可用的示例实现)?
由于未来的CPU将趋向于更多核心并且时钟速度趋于平稳,有没有办法提高文件散列的性能?(除了液氮冷却超频?)或者它本身是不可并行化的?
有一堆关于rsync校验和的线程,但似乎都没有解决这个需求,这将是最有效和最快速的同步方式,至少在我的情况下:
我注意到--checksum
,如果有很多文件,该选项可能需要很长时间来镜像文件夹.单独使用此选项将对每个文件运行校验和,这非常安全但非常慢.此外,它会引起读访问开销以计算校验和.
选项--ignore-times
不是我想要的,如果时间和大小都匹配,文件不同的可能性是微不足道的,我愿意承担不转移的风险.
该选项--size-only
是不完整的,因为具有相同大小但不同时间的文件很可能实际上是不同的文件(例如,在另一个文件中更改char可能不会影响大小,只影响编辑时间).
有没有办法按照上面的组合执行镜像,使用rsync(我在机器人页面中遗漏了什么)或使用任何其他Linux工具?
谢谢.
我有一个旧的,不再制造的带有串口的电子设备.我正在尝试对此设备中使用的数据包CRC /校验和/散列进行逆向工程.
任何有敏锐眼光,有敏锐数学技能的人都可以破解这个东西?
这是我到目前为止所知道的......
验证我的数据包样本观察到上述网络链接中概述的"叠加原则".这表明它们具有数学XOR关系.
开始感觉很好......但之后又难过了.无法确定CRC-16多项式.这些数据包哈希很可能不与CRC相关,而是一些家庭酿造方案.
通过Ross N. Williams阅读"CRC错误检测算法的无痛指南"
不幸的是,我无法访问任何设备源/二进制代码
还运行测试以查看是否使用了其他哈希,例如Fletcher的校验和
以下是我的数据包的各种样本.
0x47366B2EE00000000000751CEB5F3469543B585E2D
0x47366B2ED00000000000751CEB5F3469543B582A2C
0x47366B2EC80000000000751CEB5F3469543B580B2B
0x47366B2EC40000000000751CEB5F3469543B58BB2A
0x47366B2EC20040000000751CEB5F3469543B58DFE7
0x47366B2EC10000000000751CEB5F3469543B58A328
0x47366B2EC08000000000751CEB5F3469543B584127
0x47366B2EC04000000000751CEB5F3469543B588126
0x47366B2EC02000000000751CEB5F3469543B580525
0x47366B2EC01000000000751CEB5F3469543B580124
请注意以下有关这些数据包的信息......
(0X47)............................................... ......................(0x2D)
我不知道我的系统是大端还是小端,但是确定的字节是LSB优先的
请参阅数据包的0x47366B2E部分之后的数据字节.
只有模式我看到出现的是每个数据包上的最后一个字节递减一(2D,2C,...).(除了第5个数据包,我必须更改2位)
任何帮助表示赞赏!
我们有一个基于C#的Web服务,它接收来自具有法律约束力的文档的政治组织的文档.
目前,我们向文件管理器提供收据,其中包含收到的文件的校验和,因此我们可以在稍后的时间向文件管理器证明存储在我们系统中的文件与其原始提交的文件匹配.收据将作为电子邮件发送给文件管理器.
但是,我们无法向第三方审核员证明存储在我们系统中的文件和校验和从未改变(即恶意DBA可能会更改校验和值以匹配某些虚假替换文档的内容).
我目前正在考虑在某个地方托管的只写"日志文件"(可能是第三方审核员认为合理值得信赖的提供商,如AWS)我们可以记录每个文件ID和校验和当他们发生.理想情况下,这个远程日志文件的行为就像一个老式的会计日志 - 你只能用笔写,所以你永远不能删除以前的条目!
另一种选择可能是将这些电子邮件收据发送给第三方电子邮件存档提供商?(我们的消息历史记录量非常小,这可能不值得与存档提供程序进行对话)
有没有人有建议?
我听说在创建哈希时,如果使用小文件或数据量,结果哈希可能会更容易发生冲突.如果这是真的,是否应该使用最少的"安全"数据来确保不会发生这种情况?
我猜这个问题也可以表达为:
可以安全可靠地散列的最小数据量是多少?
对于小字符串(20-500个字符),我需要快速校验和(尽可能快).
我需要源代码,而且必须很小!(最多约100 LOC)
如果它可以在Base32/64中生成字符串.(或类似的东西)它会是完美的.基本上校验和不能使用任何"坏"字符..你知道..通常(){} [].,;:/ + - \| 等等
澄清
它可能是强弱的,这无关紧要,因为它仅用于幕后目的.
它不需要包含原始字符串的所有数据,因为我只会与生成的校验和进行比较,我不期望任何类型的"解密".