Depends which of the OpenSSL APIs you use to do the hashing. Some give
you a usable context pointer where you can access the bytes that need
saving by following pointers into "internal" structures, others do not.
However note that there is another problem in such cases: When a
connection is interrupted, it is very common that the server and client
do not completely agree on the exact byte offset of the interruption
(because some bytes sent by the server never reached the client but were
lost in hardware and software buffers). So the saved CTX will usually
be for different byte offsets at each end and one end will have restart
its MD5 calls at a different byte offsets than where it restarts its
transmission calls.
On 1/27/2012 8:22 AM, Prabu RM wrote:
Hi Jakob,
Thanks for your reply and we will try as you say. Is there any other
way to store the CTX at block level in RDBMS like MySQL? Say if the
transfer is interrupted at 500 MB and i know at which block the
transfer has been interrupted. In same scenario if i know the CTX of
already sent block then it will avoid the process of MD5 update of
already stored 500 MB before the next transfer schedule. Simply is it
possible to get the CTX at block level and proceed?
Regards,
Prabu RM.
On Thu, Jan 26, 2012 at 7:21 PM, Jakob Bohm <jb-open...@wisemo.com
<mailto:jb-open...@wisemo.com>> wrote:
On 1/26/2012 7:25 AM, Prabu RM wrote:
Hi,
We have been used to CRC via MD5 hash algorithm for a file to
be transferred in socket we kepp below steps.
_*At Client side:*_
1.Md5 Init()
2.MD5 Update
MD5 Update
MD5 Update
MD5 Update
.
.
.
3.MD5 Final
4.Get Checksum *C1*
_*At Server side:*_
1.Md5 Init()
2.MD5 Update
MD5 Update
MD5 Update
MD5 Update
.
.
.
3.MD5 Final
4.Get Checksum *C2*
*if(C1 == C2)
{
crc is sucess!
}
*
What my case is if i transfer a file with large size about 1GB
and if the socket closed at the time of file reaching 500MB
and i re-transfer the file in next schedule. In this how can i
work with MD5,SHA hash algorithms where i wish "Where it left
off"?
Could you please help me? Simply how can i handle CRC of
incomplete file in next schedule? Is there any other way
rather than transferring entire file?
Regards,
Prabu RM.
Simple:
At Server side first pass the bytes from the previously
received 500MB to MD5 Update, then the bytes of the
sent 500MB, so MD5 Update gets the same bytes as for a
full transfer but with only the missing bytes
transferred.
At Client side first pass the 500MB that will not be
sent to MD5 Update, then the 500MB that are sent.
If you use HTTP with the "Range" and "MD5-something"
headers for this job, be sure your client handles the
possibility of the server choosing to send a larger
fraction of the file than requested (it is allowed to
do that, by specifying a different range or the entire
file in its response HTTP headers). For the excess
bytes you can decide to use either the newly received
of the previously received values of those bytes, just
make sure you give MD5 Update the bytes that you will
actually put/keep in the final file.
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List openssl-users@openssl.org
<mailto:openssl-users@openssl.org>
Automated List Manager majord...@openssl.org
<mailto:majord...@openssl.org>
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List openssl-users@openssl.org
Automated List Manager majord...@openssl.org