Advertisement
Guest User

Untitled

a guest
Feb 4th, 2014
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1. void sha1_hash(char* hash, const char* data, size_t data_nbytes) {
  2.     boost::uuids::detail::sha1 sha1;
  3.  
  4.     unsigned int digest[5];
  5.  
  6.     sha1.process_bytes(data, data_nbytes);
  7.     sha1.get_digest(digest);
  8.  
  9.     for(int i = 0; i < 5; ++i) {
  10.         const char* tmp = reinterpret_cast<char*>(digest);
  11.         hash[i*4] = tmp[i*4+3];
  12.         hash[i*4+1] = tmp[i*4+2];
  13.         hash[i*4+2] = tmp[i*4+1];
  14.         hash[i*4+3] = tmp[i*4];
  15.     }
  16. }
  17.  
  18. unsigned int base64_encode(char* dest, const char* src, unsigned int len) {
  19.     char tail[3] = {0,0,0};
  20.  
  21.     unsigned int one_third_len = len/3;
  22.     unsigned int len_rounded_down = one_third_len*3;
  23.     unsigned int j = len_rounded_down + one_third_len;
  24.  
  25.     std::copy(base64_enc(src), base64_enc(src + len_rounded_down), dest);
  26.  
  27.     if (len_rounded_down != len) {
  28.         unsigned int i=0;
  29.         for(; i < len - len_rounded_down; ++i) {
  30.             tail[i] = src[len_rounded_down+i];
  31.         }
  32.  
  33.         std::copy(base64_enc(tail), base64_enc(tail + 3), dest + j);
  34.  
  35.         for(i=len + one_third_len + 1; i < j+4; ++i) {
  36.             dest[i] = '=';
  37.         }
  38.  
  39.         return i;
  40.     }
  41.  
  42.     return j;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement