C++ sha256加密(openssl庫)

jopen 9年前發布 | 40K 次閱讀 加密 安全相關

安全散列算法

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

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

想要找到兩組不同的消息對應到相同的消息摘要,從計算理論上來說也是很困難的。任何對輸入消息的變動,都有很高的概率導致其產生的消息摘要迥異。

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

在這里,我用的是SHA-256加密,代碼如下:

#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; }</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!