0 Reference
http://blog.csdn.net/liuhong135541/article/details/8138525
http://blog.csdn.net/shahongzhou/article/details/6586303
http://blog.sina.com.cn/s/blog_4c451e0e0100zf2j.html
1 Install
sudo apt-get install openssl
udo apt-get install libssl-dev
you will find ./usr/include/openssl/sha.h
and ./usr/lib/x86_64-linux-gnu/libcrypto.so
2 need link the libcrypto by using -lcrypto in the gcc command.
OpenSSL—SHA1(信息摘要算法)
SHA1算法是對MD5算法的升級,計算結果爲20字節(160位),使用方法如下:
(1) int SHA_Init(SHA_CTX *c);
// 初始化 SHA Contex, 成功返回1,失敗返回0
(2) int SHA_Update(SHA_CTX *c, const void *data, size_t len);
// 循環調用此函數,可以將不同的數據加在一起計算SHA1,成功返回1,失敗返回0
(3) int SHA_Final(unsigned char *md, SHA_CTX *c);
// 輸出SHA1結果數據,成功返回1,失敗返回0
(4) unsigned char *SHA(const unsigned char *d, size_t n, unsigned char *md);
// SHA_Init,SHA_Update,SHA_Final三個函數的組合,直接計算出SHA1的值
(5) void SHA_Transform(SHA_CTX *c, const unsigned char *data);
// 內部函數,不需要調用
#include <openssl/sha.h>
unsigned char *SHA1(const unsigned char *d, unsigned long n, unsigned char *md);
int SHA1_Init(SHA_CTX *c); int SHA1_Update(SHA_CTX *c, const void *data, unsigned long len); int SHA1_Final(unsigned char *md, SHA_CTX *c);
SHA-1 (Secure Hash Algorithm) is a cryptographic hash function with a 160bit output.
SHA1()
computes the SHA-1 message digest of the nbytes at d and places it in md (which must have space for SHA_DIGEST_LENGTH == 20 bytes of output). If md is NULL, the digest is
placed in a static array.
The following functions may be used if the message is not completely storedin memory:
SHA1_Init()
initializes a SHA_CTX structure.
SHA1_Update()
can be called repeatedly with chunks of themessage to be hashed (len bytes at data).
SHA1_Final()
places the message digest in md, which must have space for SHA_DIGEST_LENGTH == 20 bytes of output, anderases the SHA_CTX.
Applications should use the higher level functionsEVP_DigestInit(3)etc. instead of calling the hash functions directly.
The predecessor of SHA-1, SHA, is also implemented, but it should be usedonly when backward compatibility is required.