mirror of https://github.com/dnomd343/md5sum.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.3 KiB
64 lines
1.3 KiB
#include "md5.h"
|
|
|
|
namespace md5 {
|
|
|
|
MD5& MD5::Reset() {
|
|
ctx_.A = MD5_A;
|
|
ctx_.B = MD5_B;
|
|
ctx_.C = MD5_C;
|
|
ctx_.D = MD5_D;
|
|
|
|
ctx_.size = 0;
|
|
buffer_size_ = 0;
|
|
return *this;
|
|
}
|
|
|
|
MD5& MD5::Update(const void *buffer, uint64_t len) {
|
|
// TODO: handle buffer_
|
|
|
|
if (buffer_size_ == 0) {
|
|
// TODO: len % 64 == 0
|
|
md5_update(&ctx_, buffer, len);
|
|
}
|
|
|
|
// TODO: save extra data into buffer_
|
|
|
|
return *this;
|
|
}
|
|
|
|
MD5& MD5::Final() {
|
|
// TODO: call md5_final with buffer_
|
|
return *this;
|
|
}
|
|
|
|
std::string MD5::Digest() {
|
|
// TODO: return md5 digest in std::string (length = 16)
|
|
return "";
|
|
}
|
|
|
|
std::string MD5::String() {
|
|
// TODO: return md5 string (length = 32)
|
|
return "";
|
|
}
|
|
|
|
std::string MD5::Hash(const std::string_view &data) {
|
|
|
|
md5_ctx ctx;
|
|
md5_final(&ctx, data.data(), data.size());
|
|
|
|
// std::cout << std::hex << __builtin_bswap32(ctx.A);
|
|
// std::cout << std::hex << __builtin_bswap32(ctx.B);
|
|
// std::cout << std::hex << __builtin_bswap32(ctx.C);
|
|
// std::cout << std::hex << __builtin_bswap32(ctx.D) << std::endl;
|
|
|
|
// TODO: perf convert speed
|
|
char tmp[33];
|
|
sprintf(tmp, "%08x%08x%08x%08x",
|
|
__builtin_bswap32(ctx.A),
|
|
__builtin_bswap32(ctx.B),
|
|
__builtin_bswap32(ctx.C),
|
|
__builtin_bswap32(ctx.D));
|
|
return {tmp};
|
|
}
|
|
|
|
} // namespace md5
|
|
|