日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用openssl来计算sha1, sha224, sha256, sha384, sha512

發布時間:2023/12/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用openssl来计算sha1, sha224, sha256, sha384, sha512 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載:http://blog.csdn.net/stpeace/article/details/42371079


利用openssl來計算sha1, sha224, sha256, sha384, sha512,前提是已經配置了openssl的環境:

代碼如下:

[cpp]?view plaincopy
  • #include?<iostream>??
  • #include?<openssl/sha.h>???
  • #include?<openssl/crypto.h>??//?OPENSSL_cleanse??
  • #pragma?comment(lib,?"libeay32.lib")??
  • #pragma?comment(lib,?"ssleay32.lib")??//?在本程序中,?可以注釋掉這句??
  • using?namespace?std;??
  • ??
  • const?char?*orgStr?=?"hello";?//待哈希的串??
  • ??
  • //?打印前,?有必要轉換??
  • void?printHash(unsigned?char?*md,?int?len)??
  • {??
  • ????int?i?=?0;??
  • ????for?(i?=?0;?i?<?len;?i++)??
  • ????{??
  • ????????printf("%02x",?md[i]);??
  • ????}??
  • ??
  • ????printf("\n");??
  • }??
  • ??
  • void?myHash1()??
  • {??
  • ????SHA_CTX?c;??
  • ????unsigned?char?md[SHA_DIGEST_LENGTH];??
  • ????SHA1((unsigned?char?*)orgStr,?strlen(orgStr),?md);??
  • ????printHash(md,?SHA_DIGEST_LENGTH);??
  • ??
  • ????SHA1_Init(&c);??
  • ????SHA1_Update(&c,?orgStr,?strlen(orgStr));??
  • ????SHA1_Final(md,?&c);??
  • ????OPENSSL_cleanse(&c,?sizeof(c));??
  • ????printHash(md,?SHA_DIGEST_LENGTH);??
  • }??
  • ??
  • void?myHash224()??
  • {??
  • ????SHA256_CTX?c;??
  • ????unsigned?char?md[SHA224_DIGEST_LENGTH];??
  • ????SHA224((unsigned?char?*)orgStr,?strlen(orgStr),?md);??
  • ????printHash(md,?SHA224_DIGEST_LENGTH);??
  • ??
  • ????SHA224_Init(&c);??
  • ????SHA224_Update(&c,?orgStr,?strlen(orgStr));??
  • ????SHA224_Final(md,?&c);??
  • ????OPENSSL_cleanse(&c,?sizeof(c));??
  • ????printHash(md,?SHA224_DIGEST_LENGTH);??
  • }??
  • ??
  • void?myHash256()??
  • {??
  • ????SHA256_CTX?c;??
  • ????unsigned?char?md[SHA256_DIGEST_LENGTH];??
  • ????SHA256((unsigned?char?*)orgStr,?strlen(orgStr),?md);??
  • ????printHash(md,?SHA256_DIGEST_LENGTH);??
  • ??
  • ????SHA256_Init(&c);??
  • ????SHA256_Update(&c,?orgStr,?strlen(orgStr));??
  • ????SHA256_Final(md,?&c);??
  • ????OPENSSL_cleanse(&c,?sizeof(c));??
  • ????printHash(md,?SHA256_DIGEST_LENGTH);??
  • }??
  • ??
  • void?myHash384()??
  • {??
  • ????SHA512_CTX?c;??
  • ????unsigned?char?md[SHA384_DIGEST_LENGTH];??
  • ????SHA384((unsigned?char?*)orgStr,?strlen(orgStr),?md);??
  • ????printHash(md,?SHA384_DIGEST_LENGTH);??
  • ??
  • ????SHA384_Init(&c);??
  • ????SHA384_Update(&c,?orgStr,?strlen(orgStr));??
  • ????SHA384_Final(md,?&c);??
  • ????OPENSSL_cleanse(&c,?sizeof(c));??
  • ????printHash(md,?SHA384_DIGEST_LENGTH);??
  • }??
  • ??
  • void?myHash512()??
  • {??
  • ????SHA512_CTX?c;??
  • ????unsigned?char?md[SHA512_DIGEST_LENGTH];??
  • ????SHA512((unsigned?char?*)orgStr,?strlen(orgStr),?md);??
  • ????printHash(md,?SHA512_DIGEST_LENGTH);??
  • ??
  • ????SHA512_Init(&c);??
  • ????SHA512_Update(&c,?orgStr,?strlen(orgStr));??
  • ????SHA512_Final(md,?&c);??
  • ????OPENSSL_cleanse(&c,?sizeof(c));??
  • ????printHash(md,?SHA512_DIGEST_LENGTH);??
  • }??
  • ??
  • int?main()??
  • {??
  • ????myHash1();??
  • ????myHash224();??
  • ????myHash256();??
  • ????myHash384();??
  • ????myHash512();??
  • ??
  • ????return?0;??
  • }??
  • ? ? ?與其他工具相比, 結果一致。

    總結

    以上是生活随笔為你收集整理的利用openssl来计算sha1, sha224, sha256, sha384, sha512的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。