no bug - Bumping Firefox l10n changesets r=release a=l10n-bump DONTBUILD CLOSED TREE
[gecko.git] / third_party / picosha2 / README.md
blob06e62864ab66ea2c6673c306c6810f78217d3405
1 # PicoSHA2 - a C++ SHA256 hash generator
3 Copyright © 2017 okdshin
5 ## Introduction
7 PicoSHA2 is a tiny SHA256 hash generator for C++ with following properties:
9 - header-file only
10 - no external dependencies (only uses standard C++ libraries)
11 - STL-friendly
12 - licensed under MIT License
14 ## Generating SHA256 hash and hash hex string
16 ```cpp
17 // any STL sequantial container (vector, list, dequeue...)
18 std::string src_str = "The quick brown fox jumps over the lazy dog";
20 std::vector<unsigned char> hash(picosha2::k_digest_size);
21 picosha2::hash256(src_str.begin(), src_str.end(), hash.begin(), hash.end());
23 std::string hex_str = picosha2::bytes_to_hex_string(hash.begin(), hash.end());
24 ```
26 ## Generating SHA256 hash and hash hex string from byte stream
28 ```cpp
29 picosha2::hash256_one_by_one hasher;
30 ...
31 hasher.process(block.begin(), block.end());
32 ...
33 hasher.finish();
35 std::vector<unsigned char> hash(picosha2::k_digest_size);
36 hasher.get_hash_bytes(hash.begin(), hash.end());
38 std::string hex_str = picosha2::get_hash_hex_string(hasher);
39 ```
41 The file `example/interactive_hasher.cpp` has more detailed information.
43 ## Generating SHA256 hash from a binary file
45 ```cpp
46 std::ifstream f("file.txt", std::ios::binary);
47 std::vector<unsigned char> s(picosha2::k_digest_size);
48 picosha2::hash256(f, s.begin(), s.end());
49 ```
51 This `hash256` may use less memory than reading whole of the file.
53 ## Generating SHA256 hash hex string from std::string
55 ```cpp
56 std::string src_str = "The quick brown fox jumps over the lazy dog";
57 std::string hash_hex_str;
58 picosha2::hash256_hex_string(src_str, hash_hex_str);
59 std::cout << hash_hex_str << std::endl;
60 //this output is "d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592"
61 ```
63 ```cpp
64 std::string src_str = "The quick brown fox jumps over the lazy dog";
65 std::string hash_hex_str = picosha2::hash256_hex_string(src_str);
66 std::cout << hash_hex_str << std::endl;
67 //this output is "d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592"
68 ```
70 ```cpp
71 std::string src_str = "The quick brown fox jumps over the lazy dog.";//add '.'
72 std::string hash_hex_str = picosha2::hash256_hex_string(src_str.begin(), src_str.end());
73 std::cout << hash_hex_str << std::endl;
74 //this output is "ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c"
75 ```
77 ## Generating SHA256 hash hex string from byte sequence
79 ```cpp
80 std::vector<unsigned char> src_vect(...);
81 std::string hash_hex_str;
82 picosha2::hash256_hex_string(src_vect, hash_hex_str);
83 ```
85 ```cpp
86 std::vector<unsigned char> src_vect(...);
87 std::string hash_hex_str = picosha2::hash256_hex_string(src_vect);
88 ```
90 ```cpp
91 unsigned char src_c_array[picosha2::k_digest_size] = {...};
92 std::string hash_hex_str;
93 picosha2::hash256_hex_string(src_c_array, src_c_array+picosha2::k_digest_size, hash_hex_str);
94 ```
96 ```cpp
97 unsigned char src_c_array[picosha2::k_digest_size] = {...};
98 std::string hash_hex_str = picosha2::hash256_hex_string(src_c_array, src_c_array+picosha2::k_digest_size);
99 ```
102 ## Generating SHA256 hash byte sequence from STL sequential container
104 ```cpp
105 //any STL sequantial container (vector, list, dequeue...)
106 std::string src_str = "The quick brown fox jumps over the lazy dog";
108 //any STL sequantial containers (vector, list, dequeue...)
109 std::vector<unsigned char> hash(picosha2::k_digest_size);
111 // in: container, out: container
112 picosha2::hash256(src_str, hash);
115 ```cpp
116 //any STL sequantial container (vector, list, dequeue...)
117 std::string src_str = "The quick brown fox jumps over the lazy dog";
119 //any STL sequantial containers (vector, list, dequeue...)
120 std::vector<unsigned char> hash(picosha2::k_digest_size);
122 // in: iterator pair, out: contaner
123 picosha2::hash256(src_str.begin(), src_str.end(), hash);
126 ```cpp
127 std::string src_str = "The quick brown fox jumps over the lazy dog";
128 unsigned char hash_byte_c_array[picosha2::k_digest_size];
129 // in: container, out: iterator(pointer) pair
130 picosha2::hash256(src_str, hash_byte_c_array, hash_byte_c_array+picosha2::k_digest_size);
133 ```cpp
134 std::string src_str = "The quick brown fox jumps over the lazy dog";
135 std::vector<unsigned char> hash(picosha2::k_digest_size);
136 // in: iterator pair, out: iterator pair
137 picosha2::hash256(src_str.begin(), src_str.end(), hash.begin(), hash.end());