安全散列算法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; }