md5,sha1,sha256 算法使用例子 c++实现

时间:2017-03-31 17:06:08   收藏:0   阅读:2020

    #include<stdio.h>
    #include <iostream>  
    #include <openssl/sha.h>   
    #include <openssl/crypto.h>  
    #include <openssl/md5.h>

    using namespace std;  
      
    const char *src_str = "hello world";
      
    void printHexstr(const unsigned char *md, int len)  
    {  
        int i = 0;  
        for (i = 0; i < len; i++)  
        {  
            printf("%02x", md[i]);  
        }  
        printf("\n");  
    }  
      
    void testMD5()
    {
        printf("---------MD5 start-----\n");
        unsigned char md[MD5_DIGEST_LENGTH];  
        MD5((unsigned char *)src_str, strlen(src_str), md);
        printHexstr(md, MD5_DIGEST_LENGTH);  
    
        MD5_CTX ctx;
        MD5_Init(&ctx);
        MD5_Update(&ctx,(char*)src_str,strlen(src_str));
        MD5_Final(md,&ctx);
        printHexstr(md, MD5_DIGEST_LENGTH);  
        printf("---------MD5 end-----\n\n");
    }

    void testSHA1()  
    {
        printf("---------SHA1 start-----\n");
        SHA_CTX c;  
        unsigned char md[SHA_DIGEST_LENGTH];  
        SHA1((unsigned char *)src_str, strlen(src_str), md);  
        printHexstr(md, SHA_DIGEST_LENGTH);  
      
        SHA1_Init(&c);  
        SHA1_Update(&c, src_str, strlen(src_str));  
        SHA1_Final(md, &c);  
        OPENSSL_cleanse(&c, sizeof(c));  
        printHexstr(md, SHA_DIGEST_LENGTH);  
        printf("---------SHA1 end-----\n\n");
    }  
      
    void testSHA256()  
    {  
        printf("---------SHA256 start-----\n");
        SHA256_CTX c;  
        unsigned char md[SHA256_DIGEST_LENGTH];  
        SHA256((unsigned char *)src_str, strlen(src_str), md);  
        printHexstr(md, SHA256_DIGEST_LENGTH);  
      
        SHA256_Init(&c);  
        SHA256_Update(&c, src_str, strlen(src_str));  
        SHA256_Final(md, &c);  
        OPENSSL_cleanse(&c, sizeof(c));  
        printHexstr(md, SHA256_DIGEST_LENGTH);
        printf("---------SHA256 end-----\n\n");        
    }  
      
    int main()  
    {  
        testMD5();  
        testSHA1();
        testSHA256(); 
        return 0;  
    }  

原文:http://www.cnblogs.com/yinhua405/p/6651835.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!