SHA-1 or SHA1 is a one-way hash function;
it computes a 160-bit message digest.
SHA-1 often appears in security protocols; for example,
many HTTPS websites use RSA with SHA-1 to secure their connections.
BitTorrent uses SHA-1 to verify downloads.
Git and Mercurial use SHA-1 digests to identify commits.

A US government standard, FIPS 180-1, defines SHA-1.

Find the SHA-1 message digest for a string of octets. You may either call a SHA-1 library, or implement SHA-1 in your language. Both approaches interest Rosetta Code.



 Warning: SHA-1 has known weaknesses. Theoretical attacks may find a collision after 252 operations, or perhaps fewer.
This is much faster than a brute force attack of 280 operations. USgovernment deprecated SHA-1.
For production-grade cryptography, users may consider a stronger alternative, such as SHA-256 (from the SHA-2 family) or the upcoming SHA-3.


use crypto::sha1;
use encoding::hex;
use fmt;
use hash;
use os;
use strings;
 
export fn main() void = {
	const sha = sha1::sha1();
	hash::write(&sha, strings::toutf8("Rosetta Code"));
 
	let sum: [sha1::SIZE]u8 = [0...];
	hash::sum(&sha, sum);
	hex::encode(os::stdout, sum)!;
	fmt::println()!;
};