我尝试验证上传到存储桶的文件的完整性,但我没有找到任何相关信息.
在文件的标题中,有一个"E-tag",但我认为它不是md5校验和.
那么,我如何检查我在Amazon S3上上传的文件是否与我在计算机上的文件相同?
谢谢.:)
我需要OpenCV3.0,因为它支持我需要的一些新功能.我使用以下代码进行安装(我已经使用此代码成功安装了OpenCV 2.4.9.但对于OpenCV 3.0,在执行cmake部分时,由于MD5校验和不匹配而弹出一些错误)
mkdir OpenCV
cd OpenCV
echo "Removing any pre-installed ffmpeg and x264"
sudo apt-get -qq remove ffmpeg x264 libx264-dev
echo "Installing Dependenices"
sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg
echo "Installing OpenCV" $version
unzip OpenCV-3.0.zip #i manually installed opencv3.0 zipfile for linux from https://github.com/Itseez/opencv/archive/3.0.0-alpha.zip
cd opencv-3.0.0-alpha
mkdir build
cd build …
Run Code Online (Sandbox Code Playgroud) 为了保持一致性,我发现自己需要为一串数据生成校验和.广义的想法是客户端可以根据收到的有效负载重新生成校验和,从而检测传输过程中发生的任何损坏.我隐约意识到这种事情背后有各种各样的数学原理,如果你试图自己滚动,那么微妙的错误就很容易使整个算法失效.
所以我正在寻找有关散列/校验和算法的建议,其标准如下:
我主要对轻量级的东西感兴趣,而不是让碰撞的绝对最小潜力成为可能.我是否天真地想象一个八字符哈希适合这个?我还应该澄清,如果在验证阶段没有发现腐败,那么这不是世界末日(而且我确实认识到这不会100%可靠),尽管我的其余代码对每个代码的效率都显着降低滑倒的腐败入境.
编辑 - 感谢所有贡献.我选择了Adler32选项,并且它在Java中原生支持,在Javascript中非常容易实现,在两端快速计算并且具有8字节输出,这完全符合我的要求.
(请注意,我意识到网络传输不太可能对任何损坏错误负责,并且不会在此问题上折叠我的手臂;但是添加校验和验证会消除一个故障点,这意味着我们可以专注于其他方面如果再次发生这种情况.)
注意:我最初将其发布到信息安全,但我开始认为它可能更相关,因为它确实是关于确定我应该如何处理请求而不是保护信息.
A
:我有一个A
向用户提供请求的系统.此服务器执行某些操作,然后将用户重定向到系统B
.在该重定向期间,服务器A
可以向用户提供32个字符的字母数字信息串以传递给系统B
.需要31个字符的信息,但其中一个可用作校验和.此字符串可以或多或少地被视为请求ID.
B
:当系统B
接收来自用户的请求时,它可以验证该请求(以及ID-等字符串)是有效的通过解析31个字符的字符串,查询数据库,再跟系统A.本系统可以绝对肯定验证请求有效并且没有被篡改,但它的计算成本非常高.
该系统可能会看到许多欺骗ID的尝试.这可以通过以后的检查进行过滤,因此我并不担心单个角色完全签署ID,但我确实希望避免花费更多资源来处理这些请求.
我正在寻找一个校验和/签名方案,它可以用一个字符让我很好地了解请求是否应该继续进行验证过程,或者是否应该立即将其丢弃为无效.如果一条消息被丢弃,我需要100%确定它是无效的,但如果我保留无效的消息也没关系.我相信理想的解决方案意味着保留1/62无效请求(攻击者必须猜测检查字符),但作为最小解决方案,丢弃所有无效请求的一半就足够了.
我看过使用卢恩算法(这是用于信用卡相同),但我想能够使用一键生成的字符,使其更难以攻击者欺骗校验.
作为创建签名方案的第一次尝试,我用一个31字节的密钥对31字节的id进行按位,对结果字节求和,转换为十进制并将数字加在一起直到它小于62,然后映射它到集合中的字符[a-bA-Z0-9]
(下面的伪代码).问题是虽然我很确定这不会丢弃任何有效的请求,但我不确定如何确定这将通过无效ID的频率,或者是否可以使用最终值检索密钥.
Set alphabet to (byte[]) "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
Set keystring to "aLaklj14sdLK87kxcvalskj7asfrq01";
Create empty byte[] key;
FOR each letter in keystring
Push (index of letter in alphabet) to key;
Create empty byte[] step1;
FOR each (r, k) in (request, key)
Push r XOR s to step1;
Set step2 to …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种校验和算法,对于大块数据,校验和等于来自所有较小组件块的校验和之和.我发现的大部分内容来自RFC 1624/1141,它们确实提供了这项功能.有没有人有这些校验和技术或类似的经验?
我正在考虑创建一个dict的校验和来知道它是否被修改了.目前我有这个:
>>> import hashlib
>>> import pickle
>>> d = {'k': 'v', 'k2': 'v2'}
>>> z = pickle.dumps(d)
>>> hashlib.md5(z).hexdigest()
'8521955ed8c63c554744058c9888dc30'
Run Code Online (Sandbox Code Playgroud)
也许存在更好的解决方案?
注意:我想创建一个独特的dict id来创建一个好的Etag.
编辑:我可以在dict中有抽象数据.
可以将Rsync配置为在同步之前验证文件的内容.我听说过校验和,但我知道校验和只是抽样.我想仅在内容被更改而不是时间戳的情况下传输文件,是否有办法在任何rsync模式下执行此操作.在我的场景中,假设每周都会创建文件sample.text,我只想在更改sample.text的内容时将其与远程服务器同步,因为它是每周创建的,时间戳会明显改变.但我希望仅在内容更改时进行转移.
我有短的,可变长度的十进制数字,如:#41551
,由人类手动转录.Mistyping one会导致不良结果,所以我首先想到的是使用Luhn算法来添加校验和 - #41551-3
.但是,这只会检测错误,而不是纠正错误.似乎添加另一个校验位应该能够检测并纠正一位数的错误,所以给定#41515-3?
(换位错误)我将能够恢复正确的错误#41551
.
像Hamming代码这样的东西看起来似乎是正确的地方,但我无法弄清楚如何将它们应用于十进制,而不是二进制数据.是否有针对此用途的算法,或汉明/里德 - 所罗门等是否可以适应这种情况?
我注意到,如果我两次编译一个Android应用程序,一个接一个地没有更改,那两个APK文件有两个不同的MD5校验和.未签名和签名的APK文件都会产生相同的结果.
您可以将其打开为ZIP文件,其中的内容在两个文件中都有相同的MD5校验和,所以我很好奇.
那里还有什么?这两个APK文件有什么不同?
checksum ×10
java ×2
javascript ×2
md5 ×2
amazon-s3 ×1
android ×1
apk ×1
artifactory ×1
check-digit ×1
cmake ×1
curl ×1
data-entry ×1
file ×1
hash ×1
installation ×1
linux ×1
node.js ×1
opencv ×1
python ×1
rsync ×1
signing ×1