C++ sha256加密(openssl庫)

安全散列算法ios

安全散列算法(英語:Secure Hash Algorithm)是一種能計算出一個數字消息所對應到的,長度固定的字符串(又稱消息摘要)的算法。且若輸入的消息不一樣,它們對應到不一樣字符串的機率很高;而SHA是FIPS所認證的五種安全散列算法。這些算法之因此稱做「安全」是基於如下兩點(根據官方標準的描述):算法

由消息摘要反推原輸入消息,從計算理論上來講是很困難的。安全

想要找到兩組不一樣的消息對應到相同的消息摘要,從計算理論上來講也是很困難的。任何對輸入消息的變更,都有很高的機率致使其產生的消息摘要迥異。函數

SHA家族的五個算法,分別是SHA-一、SHA-22四、SHA-25六、SHA-384,和SHA-512,由美國國家安全局(NSA)所設計,並由美國國家標準與技術研究院(NIST)發佈;是美國的政府標準。後四者有時並稱爲SHA-2。SHA-1在許多安全協議中廣爲使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被視爲是MD5(更早以前被廣爲使用的散列函數)的後繼者。加密

在這裏,我用的是SHA-256加密,代碼以下:spa

#include <iostream>
#include <string>

using namespace std;

#include <openssl/sha.h>
string sha256(const string str)
{
	char buf[2];
    unsigned char hash[SHA256_DIGEST_LENGTH];
    SHA256_CTX sha256;
    SHA256_Init(&sha256);
    SHA256_Update(&sha256, str.c_str(), str.size());
    SHA256_Final(hash, &sha256);
    std::string NewString = "";
    for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
    {
        sprintf(buf,"%02x",hash[i]);
        NewString = NewString + buf;
    }
	return NewString;
}

int main() {
	std::string x = "hello world";
	cout << sha256(x) << endl;
    return 0;
}
相關文章
相關標籤/搜索