日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

SM3算法 C语言 (从OpenSSL库中分离算法:六)

發布時間:2023/12/31 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SM3算法 C语言 (从OpenSSL库中分离算法:六) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SM3算法 C語言 (從OpenSSL庫中分離算法:六)

OpenSSL簡介:

OpenSSL 是用于傳輸層安全性 (TLS) 和安全套接字層 (SSL) 協議的一個強大、商業級和功能齊全的工具包,它也是一個通用的密碼學庫。包含有RSA、SM4、DES、AES等諸多加密算法。

OpenSSL GitHub地址如下:

GitHub - openssl/openssl: TLS/SSL and crypto library

在日常的開發工作中,有時只想用OpenSSL庫中的一種算法,此時調用整個OpenSSL庫,往往是沒必要的;再或者在嵌入式平臺使用某一算法,那我們只移植這個算法,沒有必要移植整個OpenSSL庫。

SM3簡介

SM3是我國采用的一種密碼散列函數標準,由國家密碼管理局于2010年12月17日發布。相關標準為“GM/T 0004-2012 《SM3密碼雜湊算法》”。它可以將任意長度的消息壓縮成固定長度的摘要,主要用于數字簽名和數據完整性保護等

在商用密碼體系中,SM3主要用于數字簽名及驗證、消息認證碼生成及驗證、隨機數生成等,其算法公開。據國家密碼管理局表示,其安全性及效率與SHA-256相當。

移植過程

一、下載代碼

從OpenSSL的Github倉庫下載代碼,可以下載master分支,也可以下載最新的release版本。將下載的文件解壓,得到代碼。

重點關注紅框目錄:

  • crypto目錄內是各種加密算法
  • include目錄內是各加密算法對外接口的頭文件

二、準備環境

新建Visual Studio C++ 控制臺項目"sm3test",編譯選項是:x86\Debug


三、準備文件

  • 復制OpenSSL源碼中:/crypto/sm3文件夾到VS工程代碼目錄下
  • 復制OpenSSL源碼中:/include/internal/sm3.h文件到VS工程代碼目錄中sm3文件夾內
  • 復制OpenSSL源碼中:/include/crypto/md32_common.h文件到VS工程代碼目錄中sm3文件夾內
  • 復制完成后,VS工程代碼目錄sm3文件夾內文件如下:

  • 刪除目錄內的如下本項目中無用文件:

    • build.info
    • legacy_sm3.c

    四、修改代碼

    修改調用文件

    在VS工程中含有main函數的主文件:sm3test.cpp中,增加包含sm3.h頭文件

    #include "sm3/sm3.h"

    在main函數中添加如下代碼

    SM3_CTX SMC;ossl_sm3_init(&SMC);const unsigned char Data[1024] = "Hello World";unsigned char md[SM3_DIGEST_LENGTH] = { 0 };ossl_sm3_update(&SMC, Data, strlen((const char *) Data));ossl_sm3_final(md, &SMC);for (int i = 0; i < SM3_DIGEST_LENGTH; i++) {printf("%02x-", *(md + i));}

    修改后的sm3test.cpp代碼如下:

    #include <iostream> #include "sm3/sm3.h" int main() {SM3_CTX SMC;ossl_sm3_init(&SMC);const unsigned char Data[1024] = "Hello World";unsigned char md[SM3_DIGEST_LENGTH] = { 0 };ossl_sm3_update(&SMC, Data, strlen((const char *) Data));ossl_sm3_final(md, &SMC);for (int i = 0; i < SM3_DIGEST_LENGTH; i++) {printf("%02x-", *(md + i));} }

    修改sm3.h

    刪除條件編譯 OPENSSL_SM3_H

    刪除頭文件# include <openssl/opensslconf.h>

    刪除條件編譯 OPENSSL_NO_SM3

    添加C++調用時的宏

    修改或刪除后的文件如下:

    # pragma once # ifdef __cplusplus extern "C" { # endif# define SM3_DIGEST_LENGTH 32 # define SM3_WORD unsigned int# define SM3_CBLOCK 64 # define SM3_LBLOCK (SM3_CBLOCK/4)typedef struct SM3state_st {SM3_WORD A, B, C, D, E, F, G, H;SM3_WORD Nl, Nh;SM3_WORD data[SM3_LBLOCK];unsigned int num; } SM3_CTX;int ossl_sm3_init(SM3_CTX* c); int ossl_sm3_update(SM3_CTX* c, const void* data, size_t len); int ossl_sm3_final(unsigned char* md, SM3_CTX* c);# ifdef __cplusplus } # endif

    修改sm3_local.h

    修改頭文件# include "internal/sm3.h"改為#include "sm3.h"

    修改頭文件# include "crypto/md32_common.h"改為#include "md32_common.h"

    修改或刪除后的文件如下:

    #include <string.h> #include "sm3.h"#define DATA_ORDER_IS_BIG_ENDIAN#define HASH_LONG SM3_WORD #define HASH_CTX SM3_CTX #define HASH_CBLOCK SM3_CBLOCK #define HASH_UPDATE ossl_sm3_update #define HASH_TRANSFORM ossl_sm3_transform #define HASH_FINAL ossl_sm3_final #define HASH_MAKE_STRING(c, s) \do { \unsigned long ll; \ll=(c)->A; (void)HOST_l2c(ll, (s)); \ll=(c)->B; (void)HOST_l2c(ll, (s)); \ll=(c)->C; (void)HOST_l2c(ll, (s)); \ll=(c)->D; (void)HOST_l2c(ll, (s)); \ll=(c)->E; (void)HOST_l2c(ll, (s)); \ll=(c)->F; (void)HOST_l2c(ll, (s)); \ll=(c)->G; (void)HOST_l2c(ll, (s)); \ll=(c)->H; (void)HOST_l2c(ll, (s)); \} while (0) #define HASH_BLOCK_DATA_ORDER ossl_sm3_block_data_ordervoid ossl_sm3_block_data_order(SM3_CTX *c, const void *p, size_t num); void ossl_sm3_transform(SM3_CTX *c, const unsigned char *data);#include "md32_common.h"#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17)) #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))#define FF0(X,Y,Z) (X ^ Y ^ Z) #define GG0(X,Y,Z) (X ^ Y ^ Z)#define FF1(X,Y,Z) ((X & Y) | ((X | Y) & Z)) #define GG1(X,Y,Z) ((Z ^ (X & (Y ^ Z))))#define EXPAND(W0,W7,W13,W3,W10) \(P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)#define RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF, GG) \do { \const SM3_WORD A12 = ROTATE(A, 12); \const SM3_WORD A12_SM = A12 + E + TJ; \const SM3_WORD SS1 = ROTATE(A12_SM, 7); \const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi; \B = ROTATE(B, 9); \D = TT1; \F = ROTATE(F, 19); \H = P0(TT2); \} while(0)#define R1(A,B,C,D,E,F,G,H,TJ,Wi,Wj) \RND(A,B,C,D,E,F,G,H,TJ,Wi,Wj,FF0,GG0)#define R2(A,B,C,D,E,F,G,H,TJ,Wi,Wj) \RND(A,B,C,D,E,F,G,H,TJ,Wi,Wj,FF1,GG1)#define SM3_A 0x7380166fUL #define SM3_B 0x4914b2b9UL #define SM3_C 0x172442d7UL #define SM3_D 0xda8a0600UL #define SM3_E 0xa96f30bcUL #define SM3_F 0x163138aaUL #define SM3_G 0xe38dee4dUL #define SM3_H 0xb0fb0e4eUL

    修改sm3.c

    刪除頭文件#include <openssl/e_os2.h>

    修改或刪除后的文件如下:

    #include "sm3_local.h"int ossl_sm3_init(SM3_CTX *c) {memset(c, 0, sizeof(*c));c->A = SM3_A;c->B = SM3_B;c->C = SM3_C;c->D = SM3_D;c->E = SM3_E;c->F = SM3_F;c->G = SM3_G;c->H = SM3_H;return 1; }void ossl_sm3_block_data_order(SM3_CTX *ctx, const void *p, size_t num) {const unsigned char *data = p;register unsigned MD32_REG_T A, B, C, D, E, F, G, H;unsigned MD32_REG_T W00, W01, W02, W03, W04, W05, W06, W07,W08, W09, W10, W11, W12, W13, W14, W15;for (; num--;) {A = ctx->A;B = ctx->B;C = ctx->C;D = ctx->D;E = ctx->E;F = ctx->F;G = ctx->G;H = ctx->H;/** We have to load all message bytes immediately since SM3 reads* them slightly out of order.*/(void)HOST_c2l(data, W00);(void)HOST_c2l(data, W01);(void)HOST_c2l(data, W02);(void)HOST_c2l(data, W03);(void)HOST_c2l(data, W04);(void)HOST_c2l(data, W05);(void)HOST_c2l(data, W06);(void)HOST_c2l(data, W07);(void)HOST_c2l(data, W08);(void)HOST_c2l(data, W09);(void)HOST_c2l(data, W10);(void)HOST_c2l(data, W11);(void)HOST_c2l(data, W12);(void)HOST_c2l(data, W13);(void)HOST_c2l(data, W14);(void)HOST_c2l(data, W15);R1(A, B, C, D, E, F, G, H, 0x79CC4519, W00, W00 ^ W04);W00 = EXPAND(W00, W07, W13, W03, W10);R1(D, A, B, C, H, E, F, G, 0xF3988A32, W01, W01 ^ W05);W01 = EXPAND(W01, W08, W14, W04, W11);R1(C, D, A, B, G, H, E, F, 0xE7311465, W02, W02 ^ W06);W02 = EXPAND(W02, W09, W15, W05, W12);R1(B, C, D, A, F, G, H, E, 0xCE6228CB, W03, W03 ^ W07);W03 = EXPAND(W03, W10, W00, W06, W13);R1(A, B, C, D, E, F, G, H, 0x9CC45197, W04, W04 ^ W08);W04 = EXPAND(W04, W11, W01, W07, W14);R1(D, A, B, C, H, E, F, G, 0x3988A32F, W05, W05 ^ W09);W05 = EXPAND(W05, W12, W02, W08, W15);R1(C, D, A, B, G, H, E, F, 0x7311465E, W06, W06 ^ W10);W06 = EXPAND(W06, W13, W03, W09, W00);R1(B, C, D, A, F, G, H, E, 0xE6228CBC, W07, W07 ^ W11);W07 = EXPAND(W07, W14, W04, W10, W01);R1(A, B, C, D, E, F, G, H, 0xCC451979, W08, W08 ^ W12);W08 = EXPAND(W08, W15, W05, W11, W02);R1(D, A, B, C, H, E, F, G, 0x988A32F3, W09, W09 ^ W13);W09 = EXPAND(W09, W00, W06, W12, W03);R1(C, D, A, B, G, H, E, F, 0x311465E7, W10, W10 ^ W14);W10 = EXPAND(W10, W01, W07, W13, W04);R1(B, C, D, A, F, G, H, E, 0x6228CBCE, W11, W11 ^ W15);W11 = EXPAND(W11, W02, W08, W14, W05);R1(A, B, C, D, E, F, G, H, 0xC451979C, W12, W12 ^ W00);W12 = EXPAND(W12, W03, W09, W15, W06);R1(D, A, B, C, H, E, F, G, 0x88A32F39, W13, W13 ^ W01);W13 = EXPAND(W13, W04, W10, W00, W07);R1(C, D, A, B, G, H, E, F, 0x11465E73, W14, W14 ^ W02);W14 = EXPAND(W14, W05, W11, W01, W08);R1(B, C, D, A, F, G, H, E, 0x228CBCE6, W15, W15 ^ W03);W15 = EXPAND(W15, W06, W12, W02, W09);R2(A, B, C, D, E, F, G, H, 0x9D8A7A87, W00, W00 ^ W04);W00 = EXPAND(W00, W07, W13, W03, W10);R2(D, A, B, C, H, E, F, G, 0x3B14F50F, W01, W01 ^ W05);W01 = EXPAND(W01, W08, W14, W04, W11);R2(C, D, A, B, G, H, E, F, 0x7629EA1E, W02, W02 ^ W06);W02 = EXPAND(W02, W09, W15, W05, W12);R2(B, C, D, A, F, G, H, E, 0xEC53D43C, W03, W03 ^ W07);W03 = EXPAND(W03, W10, W00, W06, W13);R2(A, B, C, D, E, F, G, H, 0xD8A7A879, W04, W04 ^ W08);W04 = EXPAND(W04, W11, W01, W07, W14);R2(D, A, B, C, H, E, F, G, 0xB14F50F3, W05, W05 ^ W09);W05 = EXPAND(W05, W12, W02, W08, W15);R2(C, D, A, B, G, H, E, F, 0x629EA1E7, W06, W06 ^ W10);W06 = EXPAND(W06, W13, W03, W09, W00);R2(B, C, D, A, F, G, H, E, 0xC53D43CE, W07, W07 ^ W11);W07 = EXPAND(W07, W14, W04, W10, W01);R2(A, B, C, D, E, F, G, H, 0x8A7A879D, W08, W08 ^ W12);W08 = EXPAND(W08, W15, W05, W11, W02);R2(D, A, B, C, H, E, F, G, 0x14F50F3B, W09, W09 ^ W13);W09 = EXPAND(W09, W00, W06, W12, W03);R2(C, D, A, B, G, H, E, F, 0x29EA1E76, W10, W10 ^ W14);W10 = EXPAND(W10, W01, W07, W13, W04);R2(B, C, D, A, F, G, H, E, 0x53D43CEC, W11, W11 ^ W15);W11 = EXPAND(W11, W02, W08, W14, W05);R2(A, B, C, D, E, F, G, H, 0xA7A879D8, W12, W12 ^ W00);W12 = EXPAND(W12, W03, W09, W15, W06);R2(D, A, B, C, H, E, F, G, 0x4F50F3B1, W13, W13 ^ W01);W13 = EXPAND(W13, W04, W10, W00, W07);R2(C, D, A, B, G, H, E, F, 0x9EA1E762, W14, W14 ^ W02);W14 = EXPAND(W14, W05, W11, W01, W08);R2(B, C, D, A, F, G, H, E, 0x3D43CEC5, W15, W15 ^ W03);W15 = EXPAND(W15, W06, W12, W02, W09);R2(A, B, C, D, E, F, G, H, 0x7A879D8A, W00, W00 ^ W04);W00 = EXPAND(W00, W07, W13, W03, W10);R2(D, A, B, C, H, E, F, G, 0xF50F3B14, W01, W01 ^ W05);W01 = EXPAND(W01, W08, W14, W04, W11);R2(C, D, A, B, G, H, E, F, 0xEA1E7629, W02, W02 ^ W06);W02 = EXPAND(W02, W09, W15, W05, W12);R2(B, C, D, A, F, G, H, E, 0xD43CEC53, W03, W03 ^ W07);W03 = EXPAND(W03, W10, W00, W06, W13);R2(A, B, C, D, E, F, G, H, 0xA879D8A7, W04, W04 ^ W08);W04 = EXPAND(W04, W11, W01, W07, W14);R2(D, A, B, C, H, E, F, G, 0x50F3B14F, W05, W05 ^ W09);W05 = EXPAND(W05, W12, W02, W08, W15);R2(C, D, A, B, G, H, E, F, 0xA1E7629E, W06, W06 ^ W10);W06 = EXPAND(W06, W13, W03, W09, W00);R2(B, C, D, A, F, G, H, E, 0x43CEC53D, W07, W07 ^ W11);W07 = EXPAND(W07, W14, W04, W10, W01);R2(A, B, C, D, E, F, G, H, 0x879D8A7A, W08, W08 ^ W12);W08 = EXPAND(W08, W15, W05, W11, W02);R2(D, A, B, C, H, E, F, G, 0x0F3B14F5, W09, W09 ^ W13);W09 = EXPAND(W09, W00, W06, W12, W03);R2(C, D, A, B, G, H, E, F, 0x1E7629EA, W10, W10 ^ W14);W10 = EXPAND(W10, W01, W07, W13, W04);R2(B, C, D, A, F, G, H, E, 0x3CEC53D4, W11, W11 ^ W15);W11 = EXPAND(W11, W02, W08, W14, W05);R2(A, B, C, D, E, F, G, H, 0x79D8A7A8, W12, W12 ^ W00);W12 = EXPAND(W12, W03, W09, W15, W06);R2(D, A, B, C, H, E, F, G, 0xF3B14F50, W13, W13 ^ W01);W13 = EXPAND(W13, W04, W10, W00, W07);R2(C, D, A, B, G, H, E, F, 0xE7629EA1, W14, W14 ^ W02);W14 = EXPAND(W14, W05, W11, W01, W08);R2(B, C, D, A, F, G, H, E, 0xCEC53D43, W15, W15 ^ W03);W15 = EXPAND(W15, W06, W12, W02, W09);R2(A, B, C, D, E, F, G, H, 0x9D8A7A87, W00, W00 ^ W04);W00 = EXPAND(W00, W07, W13, W03, W10);R2(D, A, B, C, H, E, F, G, 0x3B14F50F, W01, W01 ^ W05);W01 = EXPAND(W01, W08, W14, W04, W11);R2(C, D, A, B, G, H, E, F, 0x7629EA1E, W02, W02 ^ W06);W02 = EXPAND(W02, W09, W15, W05, W12);R2(B, C, D, A, F, G, H, E, 0xEC53D43C, W03, W03 ^ W07);W03 = EXPAND(W03, W10, W00, W06, W13);R2(A, B, C, D, E, F, G, H, 0xD8A7A879, W04, W04 ^ W08);R2(D, A, B, C, H, E, F, G, 0xB14F50F3, W05, W05 ^ W09);R2(C, D, A, B, G, H, E, F, 0x629EA1E7, W06, W06 ^ W10);R2(B, C, D, A, F, G, H, E, 0xC53D43CE, W07, W07 ^ W11);R2(A, B, C, D, E, F, G, H, 0x8A7A879D, W08, W08 ^ W12);R2(D, A, B, C, H, E, F, G, 0x14F50F3B, W09, W09 ^ W13);R2(C, D, A, B, G, H, E, F, 0x29EA1E76, W10, W10 ^ W14);R2(B, C, D, A, F, G, H, E, 0x53D43CEC, W11, W11 ^ W15);R2(A, B, C, D, E, F, G, H, 0xA7A879D8, W12, W12 ^ W00);R2(D, A, B, C, H, E, F, G, 0x4F50F3B1, W13, W13 ^ W01);R2(C, D, A, B, G, H, E, F, 0x9EA1E762, W14, W14 ^ W02);R2(B, C, D, A, F, G, H, E, 0x3D43CEC5, W15, W15 ^ W03);ctx->A ^= A;ctx->B ^= B;ctx->C ^= C;ctx->D ^= D;ctx->E ^= E;ctx->F ^= F;ctx->G ^= G;ctx->H ^= H;} }

    修改md32_common.h

    刪除頭文件# include <openssl/crypto.h>

    刪除代碼中全部的OPENSSL_cleanse();

    *解釋:經查閱openssl代碼中的OPENSSL_cleanse函數聲明,此函數作用等同與標準C中的memset(p,0,size)功能,是將參數一內存清0,本文件中調用該函數的地方,其參數1均為棧空間,函數結束后將自動回收,因此沒必要手動清0,因此該函數可以不調用,若不放心,可以用memset函數替代。

    修改或刪除后的文件如下:

    #if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN) # error "DATA_ORDER must be defined!" #endif#ifndef HASH_CBLOCK # error "HASH_CBLOCK must be defined!" #endif #ifndef HASH_LONG # error "HASH_LONG must be defined!" #endif #ifndef HASH_CTX # error "HASH_CTX must be defined!" #endif#ifndef HASH_UPDATE # error "HASH_UPDATE must be defined!" #endif #ifndef HASH_TRANSFORM # error "HASH_TRANSFORM must be defined!" #endif #ifndef HASH_FINAL # error "HASH_FINAL must be defined!" #endif#ifndef HASH_BLOCK_DATA_ORDER # error "HASH_BLOCK_DATA_ORDER must be defined!" #endif#define ROTATE(a,n) (((a)<<(n))|(((a)&0xffffffff)>>(32-(n))))#if defined(DATA_ORDER_IS_BIG_ENDIAN)# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \l|=(((unsigned long)(*((c)++)))<<16), \l|=(((unsigned long)(*((c)++)))<< 8), \l|=(((unsigned long)(*((c)++))) ) ) # define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \*((c)++)=(unsigned char)(((l)>>16)&0xff), \*((c)++)=(unsigned char)(((l)>> 8)&0xff), \*((c)++)=(unsigned char)(((l) )&0xff), \l)#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++))) ), \l|=(((unsigned long)(*((c)++)))<< 8), \l|=(((unsigned long)(*((c)++)))<<16), \l|=(((unsigned long)(*((c)++)))<<24) ) # define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \*((c)++)=(unsigned char)(((l)>> 8)&0xff), \*((c)++)=(unsigned char)(((l)>>16)&0xff), \*((c)++)=(unsigned char)(((l)>>24)&0xff), \l)#endif/** Time for some action :-)*/int HASH_UPDATE(HASH_CTX *c, const void *data_, size_t len) {const unsigned char *data = data_;unsigned char *p;HASH_LONG l;size_t n;if (len == 0)return 1;l = (c->Nl + (((HASH_LONG) len) << 3)) & 0xffffffffUL;if (l < c->Nl) /* overflow */c->Nh++;c->Nh += (HASH_LONG) (len >> 29); /* might cause compiler warning on* 16-bit */c->Nl = l;n = c->num;if (n != 0) {p = (unsigned char *)c->data;if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {memcpy(p + n, data, HASH_CBLOCK - n);HASH_BLOCK_DATA_ORDER(c, p, 1);n = HASH_CBLOCK - n;data += n;len -= n;c->num = 0;/** We use memset rather than OPENSSL_cleanse() here deliberately.* Using OPENSSL_cleanse() here could be a performance issue. It* will get properly cleansed on finalisation so this isn't a* security problem.*/memset(p, 0, HASH_CBLOCK); /* keep it zeroed */} else {memcpy(p + n, data, len);c->num += (unsigned int)len;return 1;}}n = len / HASH_CBLOCK;if (n > 0) {HASH_BLOCK_DATA_ORDER(c, data, n);n *= HASH_CBLOCK;data += n;len -= n;}if (len != 0) {p = (unsigned char *)c->data;c->num = (unsigned int)len;memcpy(p, data, len);}return 1; }void HASH_TRANSFORM(HASH_CTX *c, const unsigned char *data) {HASH_BLOCK_DATA_ORDER(c, data, 1); }int HASH_FINAL(unsigned char *md, HASH_CTX *c) {unsigned char *p = (unsigned char *)c->data;size_t n = c->num;p[n] = 0x80; /* there is always room for one */n++;if (n > (HASH_CBLOCK - 8)) {memset(p + n, 0, HASH_CBLOCK - n);n = 0;HASH_BLOCK_DATA_ORDER(c, p, 1);}memset(p + n, 0, HASH_CBLOCK - 8 - n);p += HASH_CBLOCK - 8; #if defined(DATA_ORDER_IS_BIG_ENDIAN)(void)HOST_l2c(c->Nh, p);(void)HOST_l2c(c->Nl, p); #elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)(void)HOST_l2c(c->Nl, p);(void)HOST_l2c(c->Nh, p); #endifp -= HASH_CBLOCK;HASH_BLOCK_DATA_ORDER(c, p, 1);c->num = 0;#ifndef HASH_MAKE_STRING # error "HASH_MAKE_STRING must be defined!" #elseHASH_MAKE_STRING(c, md); #endifreturn 1; }#ifndef MD32_REG_T # if defined(__alpha) || defined(__sparcv9) || defined(__mips) # define MD32_REG_T long /** This comment was originally written for MD5, which is why it* discusses A-D. But it basically applies to all 32-bit digests,* which is why it was moved to common header file.** In case you wonder why A-D are declared as long and not* as MD5_LONG. Doing so results in slight performance* boost on LP64 architectures. The catch is we don't* really care if 32 MSBs of a 64-bit register get polluted* with eventual overflows as we *save* only 32 LSBs in* *either* case. Now declaring 'em long excuses the compiler* from keeping 32 MSBs zeroed resulting in 13% performance* improvement under SPARC Solaris7/64 and 5% under AlphaLinux.* Well, to be honest it should say that this *prevents** performance degradation.*/ # else /** Above is not absolute and there are LP64 compilers that* generate better code if MD32_REG_T is defined int. The above* pre-processor condition reflects the circumstances under which* the conclusion was made and is subject to further extension.*/ # define MD32_REG_T int # endif #endif

    五、編譯運行

    將sm3.h,sm3.c,sm3_local.h,md32_common.h文件,配置添加到VS工程中。

    編譯運行,輸出sm3結果如下:

    77-01-58-16-14-3e-e6-27-f4-fa-41-0b-6d-ad-2b-db-9f-cb-df-1e-06-1a-45-2a-68-6b-87-11-a4-84-c5-d7

    上述算法,適用于計算字符串、緩沖區的SM3值。至于小文件、大文件的SM3如何計算,可以參考本人的另外兩篇關于MD5的博客,與SM3非常相似。

    小文件MD5計算

    大文件MD5計算

    歡迎大家關注、留言討論、可分享源碼

    總結

    以上是生活随笔為你收集整理的SM3算法 C语言 (从OpenSSL库中分离算法:六)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    www.97视频 | 婷婷色五 | 成年美女黄网站色大片免费看 | 99热在线观看| 婷婷网在线 | 日韩三级中文字幕 | 成年人在线观看视频免费 | 国产精品久久久久永久免费观看 | 亚洲激情网站免费观看 | 一区二区三区四区五区在线视频 | 久久国产区 | 久久久精品一区二区 | 6080yy精品一区二区三区 | 国产中文字幕视频在线 | 久久久久久毛片 | 午夜性福利 | 国产精品18久久久久久vr | 91高清完整版在线观看 | 日韩高清成人 | 日韩av电影中文字幕 | 国产不卡av在线播放 | 国产精品短视频 | 欧美一二三区在线观看 | 久久综合色婷婷 | 97精品超碰一区二区三区 | 天天操操操操操 | 亚洲精品66 | 成人动图 | 亚洲黄色成人 | 精品国产片 | 国产精品乱码久久久久 | 欧洲色综合 | 欧美一二区视频 | 国产精品免费高清 | 最近日本韩国中文字幕 | 国产精品成人一区二区 | 日韩在线观看你懂的 | 欧美日韩视频一区二区 | 一区电影| 国产黄色av影视 | 在线亚洲成人 | 特级毛片aaa | 99免费在线视频 | 九色porny真实丨国产18 | 国产一区二区不卡视频 | 亚洲伊人网在线观看 | 国产无套一区二区三区久久 | 久草电影免费在线观看 | 在线影院av | av三区在线| 国产精品视频专区 | 视频在线一区二区三区 | 黄色免费网 | 在线免费观看黄 | 日韩免费播放 | 日韩av中文字幕在线免费观看 | 伊人天天综合 | 九九热免费在线观看 | 国产在线日本 | 摸阴视频| 日韩两性视频 | 国产精品久久久久久久久久免费 | 国产精品99久久久精品免费观看 | 黄色国产高清 | 一级黄色片毛片 | 手机在线中文字幕 | 中文字幕免费不卡视频 | 亚洲国产成人在线观看 | 欧美另类交在线观看 | 国产精品第一页在线 | 成人黄色在线视频 | 久久久久久久久亚洲精品 | 91精品视频观看 | 香蕉视频久久久 | 国产精品久久久久aaaa九色 | 日本久久久久久 | 国产视频一 | 久久综合给合久久狠狠色 | 日本爱爱免费 | 麻豆传媒视频观看 | 亚洲人久久久 | 正在播放五月婷婷狠狠干 | 久久久久久久国产精品 | 久久精品国产免费看久久精品 | 日本中文字幕在线播放 | 五月激情久久 | 在线国产小视频 | 特级xxxxx欧美 | 欧美大片大全 | 97国产在线观看 | 九九热国产视频 | 国产香蕉在线 | 一区二区三区在线观看中文字幕 | 亚洲精品乱码久久久久久 | 天天干,天天操 | 国产免费三级在线观看 | 人人舔人人干 | 999电影免费在线观看 | 黄色精品网站 | 天天操天天操天天 | 天天操夜夜看 | 中文字幕在线免费看 | 亚洲乱码精品久久久 | 黄色片网站av | 国产又粗又猛又黄又爽 | 久久99精品久久久久久秒播蜜臀 | 日日躁夜夜躁aaaaxxxx | 日本久久成人 | 成人免费观看网址 | 在线观看久 | 午夜精品婷婷 | 欧美视频日韩视频 | 亚洲最新视频在线播放 | 四虎在线视频免费观看 | 三级在线国产 | 天天射天 | 国产特黄色片 | 久99久精品视频免费观看 | 99热精品国产 | 国产 字幕 制服 中文 在线 | 久久精品毛片基地 | 中文字幕国产精品 | 久久人人爽人人爽人人 | 九九九热精品免费视频观看网站 | 久久日本视频 | 欧美精品亚洲精品日韩精品 | 日韩一区二区免费在线观看 | 亚洲国产成人精品在线 | 激情影音 | 超碰人人在 | 欧美激情va永久在线播放 | 国产精品久久久99 | 毛片美女网站 | 精品视频国产 | www.午夜色.com | 久草在线免费看视频 | 国产一区二区电影在线观看 | 免费手机黄色网址 | 国产午夜精品理论片在线 | 99久久精品日本一区二区免费 | 国产资源在线观看 | 韩国av电影在线观看 | 人人爱爱 | 婷婷av色综合 | 成年人视频在线免费 | 亚洲专区在线播放 | 免费人成在线观看网站 | 国产精品女视频 | 亚洲精品一区二区久 | 欧美精品一区二区免费 | 99久久超碰中文字幕伊人 | 天天射天天干 | 美女视频黄的免费的 | 色wwwww | 国产91精品看黄网站 | 天天搞天天 | 婷婷色 亚洲| 九九热精品在线 | 国产不卡av在线播放 | 99国产视频在线 | 欧美性极品xxxx娇小 | 亚洲国产精品电影在线观看 | 99热官网| 一级一片免费观看 | 中文字幕日本电影 | www.久久视频 | 久久综合九色 | 中文字幕在线一区二区三区 | 国产美女免费视频 | 中文字幕免费国产精品 | 精品麻豆| 国产青春久久久国产毛片 | 国产欧美日韩精品一区二区免费 | 最新日韩在线观看视频 | 91精品国产一区二区三区 | 欧美午夜精品久久久久久浪潮 | 色就是色综合 | 天天操天天射天天舔 | 中文字幕在线中文 | 欧美日韩不卡在线观看 | 久久er99热精品一区二区 | 国产精品久久久久一区二区国产 | 日韩在线不卡 | 免费黄色网止 | 99国产成+人+综合+亚洲 欧美 | 99视频精品视频高清免费 | 国产精品99在线播放 | 欧美在线观看视频一区二区 | av片在线观看 | 免费a级观看 | 国产精品毛片久久蜜 | 97超碰人人澡人人爱学生 | 国产一区电影在线观看 | 在线播放91 | 婷婷色综合色 | 99久久99久久精品国产片 | 国产精品久久久久亚洲影视 | 97超碰免费在线 | 免费高清在线视频一区· | 99午夜 | 久久国产精品免费观看 | 欧美analxxxx| 五月在线视频 | 色亚洲激情 | av片中文字幕 | 天天天操天天天干 | 亚洲女同videos | 日韩视| 99久久精| 麻豆久久一区二区 | aaa毛片视频| 亚洲成av人片一区二区梦乃 | 国产男女爽爽爽免费视频 | 亚洲一区久久 | 欧美二区三区91 | 日韩欧美有码在线 | 一区二区三区在线影院 | 高清av中文在线字幕观看1 | 精品少妇一区二区三区在线 | 国产日韩精品一区二区三区在线 | 久久国产精品一区二区三区四区 | 日韩视频三区 | 91麻豆精品国产自产 | 青青草在久久免费久久免费 | 一区二区三区四区精品视频 | 国产日产精品一区二区三区四区的观看方式 | 天天操天天色天天射 | www视频免费在线观看 | 国产一区私人高清影院 | 亚洲天堂精品视频在线观看 | 国产日韩亚洲 | www.亚洲精品 | 一区二区三区在线视频观看58 | 欧美成人亚洲成人 | 中文字幕免费国产精品 | 91亚洲欧美激情 | 美女精品在线观看 | 999久久a精品合区久久久 | av免费在线观看网站 | 亚洲婷久久 | 久久久久国产精品一区二区 | 麻豆视频在线观看免费 | 成人黄色片在线播放 | 99久久婷婷国产一区二区三区 | 亚洲va欧美va人人爽 | 亚洲成人蜜桃 | 91精品国自产在线偷拍蜜桃 | 亚洲综合黄色 | 人人干人人做 | 美女黄濒 | 国产va饥渴难耐女保洁员在线观看 | 91高清不卡 | 色综合久久精品 | 中文理论片| 99精品在线直播 | www麻豆视频| 久久www免费视频 | 色婷婷中文 | 欧美日韩有码 | 国产一区二区在线免费观看 | 99se视频在线观看 | 国产一区二区在线影院 | 欧美日韩国产三级 | 天天射天天干 | 天天综合色网 | 人人添人人澡人人澡人人人爽 | 麻豆一区二区 | 久久久久久久久久久久久影院 | 国产理论影院 | 国产高清精品在线观看 | 国产va在线观看免费 | 337p日本欧洲亚洲大胆裸体艺术 | 婷婷网站天天婷婷网站 | 操操操干干干 | a级一a一级在线观看 | 精品美女久久久久久免费 | 日韩中文字幕免费在线播放 | 日韩精品播放 | 日韩成人免费观看 | 99草视频 | 伊人天天狠天天添日日拍 | 久草在线资源免费 | 中文字幕资源在线观看 | 国产专区视频在线观看 | 天堂av在线网址 | 成人午夜av电影 | 日韩中文字幕免费看 | 揉bbb玩bbb少妇bbb | 在线免费视频你懂的 | 欧洲精品一区二区 | 亚洲激情 在线 | 日韩欧美视频一区 | 午夜精品一区二区三区在线视频 | 黄色免费网站下载 | 日本久久久影视 | 亚洲精品88欧美一区二区 | 18久久久久 | 国产网红在线观看 | 色九九影院 | 中文字幕在线观看的网站 | 亚洲精品乱码白浆高清久久久久久 | 麻豆传媒视频观看 | 亚洲91网站 | 久久国产精品99国产 | 午夜精品在线看 | 91在线你懂的 | 国产精品久久久久久模特 | av一区二区三区在线播放 | 亚洲综合视频在线 | 三级动态视频在线观看 | 久久亚洲精品电影 | 亚洲精品视频在线免费 | 97人人艹 | 欧美国产日韩激情 | 色综合天天在线 | 在线亚洲成人 | 米奇影视7777 | 日本不卡一区二区 | 99高清视频有精品视频 | 国产精品wwwwww | 玖玖精品在线 | 久久成人精品电影 | 在线视频精品 | 亚洲视频在线观看 | 国产精品久久久久久久久蜜臀 | 国产黄色一级片在线 | 国产精品第三页 | 香蕉在线影院 | 久久九九影视 | sm免费xx网站 | av一级片在线观看 | 人人要人人澡人人爽人人dvd | 激情综合电影网 | 天堂va在线高清一区 | 国产天天综合 | 97人人视频 | 久久免费视频2 | 永久av免费在线观看 | 久久久午夜视频 | 欧美高清成人 | 超碰最新网址 | 亚洲国产美女久久久久 | 天天色天天操天天爽 | 亚洲精品乱码久久久久久按摩 | 97香蕉久久国产在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 香蕉视频久久 | 色婷婷国产精品 | 99热日本 | 亚洲成人第一区 | 国产视频2 | 成人av免费 | 国产不卡高清 | 9999精品 | 超碰成人av | 精品久久久久久一区二区里番 | 美国av大片 | 国产玖玖在线 | 欧美整片sss| 国产精品成人在线观看 | 999视频网| 丁香婷婷激情国产高清秒播 | 中文字幕在线观看完整版 | 又色又爽又黄高潮的免费视频 | 久久尤物电影视频在线观看 | 久久美女视频 | 五月天伊人 | 国产一级电影网 | 丰满少妇一级片 | 懂色av懂色av粉嫩av分享吧 | 天天色综合1 | 国内揄拍国产精品 | 国产视频网站在线观看 | 亚洲 中文字幕av | 国产精品手机播放 | 99久久国产免费免费 | 亚洲日本va在线观看 | 99精品视频在线观看播放 | 亚洲另类视频在线 | 国产激情电影综合在线看 | 久草91视频 | 成人在线视频免费观看 | 激情欧美xxxx | 丝袜制服综合网 | 日日操天天爽 | 高潮久久久久久 | 亚洲女欲精品久久久久久久18 | 黄色片毛片 | 日韩av不卡在线播放 | 激情综合网在线观看 | 天天色棕合合合合合合 | 日本少妇高清做爰视频 | wwwwww黄 | www好男人| 成人黄色小说在线观看 | 91看片淫黄大片91 | 国产精品久久99综合免费观看尤物 | 国产伦精品一区二区三区免费 | 日本高清免费中文字幕 | 国产成人在线观看免费 | www.福利| 国产亚洲精品xxoo | 欧美日比视频 | 人人爽人人 | 欧美日韩国产精品一区二区 | 欧美三人交 | 日韩在线中文字幕 | 久久精品波多野结衣 | 免费在线黄 | 久久99精品久久久久蜜臀 | 91精品国产一区二区在线观看 | 中文字幕亚洲高清 | 一级精品视频在线观看宜春院 | 日韩高清一区在线 | 亚洲国产成人av网 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 日韩三级视频 | 91麻豆精品 | 亚洲九九爱 | 欧美日韩中文国产一区发布 | 中文日韩在线视频 | 中文字幕在线看片 | 成人av电影在线观看 | 97超碰人人澡人人 | 麻豆视频在线观看免费 | 日本aaaa级毛片在线看 | 久久在线| 黄色日批网站 | 国产精品永久 | www色com | 国产成人精品一区二区三区福利 | 中文字幕日本特黄aa毛片 | 中文字幕一二 | 亚洲国产成人在线观看 | 久久精品视频网 | 成人91视频 | 亚洲国产美女精品久久久久∴ | 国产粉嫩在线观看 | 国产精品久久久久久久久久久久久 | 免费av 在线| 中文字幕999 | 又粗又长又大又爽又黄少妇毛片 | 999精品视频 | 国产精品岛国久久久久久久久红粉 | 精品国产一区二区三区四 | 亚洲九九九| 99久久综合国产精品二区 | 天堂激情网 | 97色se| 欧美日韩免费网站 | 美女在线观看av | 五月综合| 国产精品久久久久久久久岛 | 久久久久免费精品视频 | 久久久精品国产一区二区 | 麻豆国产网站 | 免费日韩一区二区三区 | 夜夜躁日日躁狠狠久久av | av成人免费在线看 | 狠狠色丁香婷婷综合久久片 | 国产福利在线免费 | 日韩肉感妇bbwbbwbbw | 亚洲视频一区二区三区在线观看 | 麻豆传媒视频在线免费观看 | 日韩视频在线一区 | 精品中文字幕在线观看 | 国产亚洲午夜高清国产拍精品 | 成人黄色毛片视频 | 在线观看久草 | 久久精品91久久久久久再现 | 激情五月婷婷激情 | 久久精品日产第一区二区三区乱码 | 国产亚洲精品久久 | 国产精品久久久久久一区二区 | 成年人视频免费在线播放 | 欧美性黄网官网 | 99精品一级欧美片免费播放 | 亚洲涩涩一区 | 91精品国产成人观看 | 香蕉网在线播放 | 操操日日 | 黄色av网站在线免费观看 | 黄色a在线观看 | 国产午夜免费视频 | 天天操夜夜逼 | 操操操日日日干干干 | 天堂va欧美va亚洲va老司机 | 日本久久久久久久久久 | 97久久久免费福利网址 | 亚洲精品在线免费观看视频 | 国产精品综合久久久久久 | 九九在线视频免费观看 | 午夜视频在线观看一区二区三区 | 国产一级片直播 | 亚洲日韩欧美一区二区在线 | 久久久久久久毛片 | 美女黄频免费 | 91精品免费在线 | 久久久精品国产免费观看同学 | 欧美性生活免费 | 九九色综合 | av免费在线观看1 | 成人av在线影院 | 国产精品美女www爽爽爽视频 | 日韩欧美一区二区三区在线观看 | 一级做a爱片性色毛片www | 天天干人人 | 黄色一区二区在线观看 | 久久久久久久免费看 | 成人黄色片免费 | 99久久婷婷国产一区二区三区 | 日本三级国产 | 免费在线观看亚洲视频 | 久草电影在线 | 黄在线免费观看 | 欧美性春潮 | 久久综合毛片 | 久久情侣偷拍 | 99视频精品 | 久久久综合电影 | 91九色porny蝌蚪主页 | 六月丁香婷婷久久 | 国产精品2020| 鲁一鲁影院 | 久久久久亚洲最大xxxx | 国产1区2区3区精品美女 | 日日草av | 国产剧情av在线播放 | 十八岁以下禁止观看的1000个网站 | 98超碰在线观看 | 国产成人精品久久二区二区 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 色香com. | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日韩精品久久久久久久电影竹菊 | 久久免费视频8 | 亚洲国产精品日韩 | 中文字幕a∨在线乱码免费看 | 国产精品字幕 | 99在线免费观看视频 | 亚洲午夜久久久久 | 黄色三级网站在线观看 | 午夜精品久久 | 97超碰中文 | 在线观看mv的中文字幕网站 | 91av精品| 精品一二三区视频 | 久久99精品国产麻豆婷婷 | 99情趣网视频 | 九色精品免费永久在线 | 国产麻豆电影在线观看 | 三级黄色在线 | 91精品国产高清自在线观看 | 日韩a级免费视频 | 国产剧情一区在线 | 日韩成人高清在线 | 亚洲天堂自拍视频 | 国产热re99久久6国产精品 | 午夜色大片在线观看 | 日日爱av | 久草视频手机在线 | av资源免费观看 | 日韩美女av在线 | 99免费在线播放99久久免费 | 亚州免费视频 | 国产精品免费久久久久 | 国内精品福利视频 | 91色偷偷 | 黄色成人91| 亚洲精品视频在线观看免费 | 国产精品理论视频 | 在线观看视频黄 | 在线观看你懂的网址 | 特级西西www44高清大胆图片 | 国产传媒一区在线 | 九草视频在线 | 久草国产视频 | 久久视频在线观看中文字幕 | 亚洲精品美女视频 | 麻豆视频在线观看免费 | 日韩久久精品一区二区 | 天天爽天天爽夜夜爽 | 国产精国产精品 | 91免费的视频在线播放 | 欧美高清视频不卡网 | 色综合久久88色综合天天 | 24小时日本在线www免费的 | 亚洲视频 中文字幕 | 欧美高清成人 | 婷婷色在线视频 | 天天操天天干天天 | 成人h在线 | 日韩v在线91成人自拍 | 亚洲欧美成人在线 | 久久婷婷色 | 免费av小说 | 成人在线你懂得 | jizz欧美性9 国产一区高清在线观看 | 一区二区在线影院 | 久久久久久亚洲精品 | 四虎成人精品永久免费av | 日韩在线视频在线观看 | 四虎在线免费观看视频 | 中文字幕日本特黄aa毛片 | 天天天天色射综合 | 久久久久黄 | 国产裸体bbb视频 | 2019中文最近的2019中文在线 | 91精品毛片| 国产成人精品三级 | 免费a级大片 | 欧美日韩国产欧美 | 天天射天天 | 奇米四色影狠狠爱7777 | 国产成人精品免费在线观看 | 97福利视频 | 91亚洲国产成人 | 日韩国产欧美在线播放 | 欧美一二三视频 | av资源免费观看 | 久草在线视频精品 | 久久激情婷婷 | 99久久影院| 字幕网资源站中文字幕 | 久久网站免费 | 日日夜夜天天人人 | 久草青青在线观看 | 黄色av免费电影 | 国产在线91在线电影 | 精品久久久久久国产偷窥 | 国产精品激情偷乱一区二区∴ | 成人在线免费观看视视频 | 国产精品自在欧美一区 | 日韩精品三区四区 | 国产91成人在在线播放 | 在线视频成人 | 亚洲精品在线观看av | 精品在线观看一区二区 | 91黄色成人 | 98久久| 在线av资源 | av看片网址| 亚洲精品视频在线观看免费视频 | 久久精品日本啪啪涩涩 | 黄色大片日本免费大片 | www欧美日韩 | 国产黄大片 | x99av成人免费 | 亚洲视频久久 | 伊甸园永久入口www 99热 精品在线 | 久久久91精品国产一区二区精品 | 国产色一区 | 91亚洲精品久久久久图片蜜桃 | 九九热在线播放 | 国产成人久久77777精品 | 91中文字幕在线观看 | 婷色| 99re8这里有精品热视频免费 | 毛片一区二区 | 久久精品视频日本 | 在线看毛片网站 | 日韩视频免费观看高清完整版在线 | 日韩a级黄色片 | 久久视频这里只有精品 | 欧美韩日精品 | 国产第一页精品 | 又色又爽又激情的59视频 | 最新av在线免费观看 | 午夜精品久久久久久久久久久久久久 | 国产精品成人国产乱 | 91av电影在线观看 | 美女视频是黄的免费观看 | 国产视频97 | 国产一二三区av | 中文字幕国产一区二区 | 欧美一级免费高清 | 91亚色视频在线观看 | 中文字幕一区三区 | 三级av免费看 | 久久精品美女视频 | 久久亚洲免费 | 国产一区二区在线播放视频 | 五月激情片 | 99热 精品在线| 成人毛片在线观看 | 9999激情 | 日韩69视频 | 天堂在线一区二区三区 | 九九视频免费在线观看 | 亚洲激情小视频 | 国产福利一区二区三区视频 | 精品国产伦一区二区三区观看说明 | 亚洲乱码国产乱码精品天美传媒 | 亚洲欧美日韩国产一区二区三区 | 午夜视频免费在线观看 | 国产精品99久久久久的智能播放 | 日韩高清在线观看 | 国产精品一区二区av麻豆 | 色综合色综合色综合 | 久久一区国产 | 中文字幕一区二区三区在线观看 | 成人中文字幕+乱码+中文字幕 | 国产色视频网站2 | 亚洲精品乱码久久久久v最新版 | 97精品国产97久久久久久春色 | 色天天天 | 九九热在线精品视频 | 亚洲人久久| 精品不卡视频 | 久久精品国产亚洲aⅴ | 在线观看成人网 | 日本久久久久久久久久 | 黄色动态图xx | 午夜的福利 | 免费观看性生交大片3 | 天天操天天操一操 | 精品黄色在线观看 | 在线观看黄网 | 成人影视免费 | 麻豆果冻剧传媒在线播放 | 超碰激情在线 | 国产精品青青 | 最近更新好看的中文字幕 | 97成人在线免费视频 | 日韩精品久久一区二区 | 韩国av免费观看 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 99在线热播精品免费99热 | 色综合天天狠狠 | 999久久久久久久久久久 | 又爽又黄又刺激的视频 | 国产精品美女久久久久久久久久久 | 成人免费观看视频大全 | 青春草国产视频 | 国产精品欧美久久久久三级 | 国产日韩一区在线 | 8x8x在线观看视频 | 久久久久成人精品免费播放动漫 | 欧美国产大片 | 日韩欧美高清在线观看 | 99精品免费久久久久久久久日本 | 91免费网| 中文在线免费看视频 | 国产亚洲亚洲 | 91欧美视频网站 | 99久久精品免费看国产一区二区三区 | av免费观看在线 | av免费在线网站 | av在线免费观看黄 | 亚洲欧美视频一区二区三区 | 久久99久久99精品免观看粉嫩 | 久久一区二区三区超碰国产精品 | 免费视频 你懂的 | 亚洲午夜久久久久久久久 | 狠狠88综合久久久久综合网 | 夜夜躁日日躁狠狠躁 | 久久精品网站视频 | 中文字幕欧美激情 | 国产成人精品在线播放 | 国产激情免费 | 97福利在线观看 | av福利在线免费观看 | 狠狠色丁香婷综合久久 | 超碰在线观看97 | 麻豆视频免费观看 | 午夜体验区 | 欧美精品在线观看一区 | 你操综合 | 成人欧美在线 | 亚洲高清国产视频 | 国产视频日韩 | 日韩久久一区二区 | 亚洲欧美视频一区二区三区 | 久久久久国产一区二区三区四区 | 欧美日韩在线视频免费 | 91九色视频在线播放 | 激情综合网五月激情 | 国产精久久 | 国产精品久久久久一区 | 91精品视频在线免费观看 | 国产精品激情在线观看 | 欧美成人xxxxxxxx | 嫩草av影院 | 欧美福利视频一区 | 免费亚洲黄色 | a在线免费 | 国产精品嫩草69影院 | 日本99干网| 欧美日韩在线播放 | 亚洲黄网站 | 9热精品 | 欧美性生活免费看 | 999久久国产 | 国产香蕉97碰碰碰视频在线观看 | 亚洲精品a区 | 国产小视频你懂的 | 欧美不卡在线 | 久久黄色a级片 | www.天天干 | 综合久久婷婷 | 欧美一级性生活视频 | 中文电影网 | 天堂网一区二区三区 | 中文字幕欲求不满 | 91精品在线免费视频 | 免费看黄色大全 | 国产精品福利av | 黄色1级大片 | 在线观看中文 | 天天干天天爽 | 精品久久视频 | 福利av在线| 久久都是精品 | 日韩精品最新在线观看 | 天天操天天色天天射 | 97国产大学生情侣白嫩酒店 | 粉嫩av一区二区三区入口 | 欧美日韩精品久久久 | 综合网久久 | 国产精品日韩在线观看 | 久久久国产在线视频 | 日韩欧美在线综合网 | 国产在线观看av | 久久精品成人欧美大片古装 | 久久这里只有精品久久 | 中文字幕在线视频一区二区 | 精品嫩模福利一区二区蜜臀 | 久久99久国产精品黄毛片入口 | 亚洲成人xxx | 国产精品 亚洲精品 | 日韩黄色在线电影 | 狠狠狠狠狠狠 | av在线网站免费观看 | 亚洲精品婷婷 | 五月激情久久 | 国产99久久精品 | 91黄色免费网站 | 国产中文在线播放 | 香蕉视频免费看 | 超碰日韩 | 黄色网www| 日本不卡123 | 99视频一区二区 | 婷婷成人亚洲综合国产xv88 | 97色在线| 97在线观看免费视频 | 99热.com | 欧美做受高潮 | 国产精品自产拍在线观看蜜 | 91精品视频观看 | 深爱激情五月婷婷 | 中文字幕一二 | 一区二区三区免费 | 深爱婷婷激情 | 欧美激情精品一区 | 精品国产理论 | av免费在线观看1 | 久久精品国产99国产 | 成人午夜影院在线观看 | 亚洲综合最新在线 | 99r在线观看 | 中文字幕一区二区三区四区 | 91视频在线观看免费 | 日本中文字幕视频 | 亚洲 欧洲 国产 日本 综合 | 91大神免费视频 | 久久久免费高清视频 | 色综合久久久久网 | 国产亚洲在 | 国产精品久久久久久久久久妇女 | 在线中文字幕网站 | 久久久福利视频 | www.日日日.com| 国产精品久久久久国产a级 激情综合中文娱乐网 | 久久精品超碰 | 波多野结衣电影一区二区 | 国产精品五月天 | 国产精品久久久久久久久久久久久久 | 干 操 插 | www.天天色 | 在线黄色免费av | 特级毛片在线 | 日韩在线视频国产 | 国产韩国日本高清视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 精品国产91亚洲一区二区三区www | 特级西西444www高清大视频 | 一区二区三区精品在线视频 | 国产一区在线观看免费 | 99久久影院 | 久久精品欧美一区二区三区麻豆 | 91在线视频免费观看 | 午夜精品久久久久 | 国产成人精品免高潮在线观看 | 欧美成人精品在线 | 免费成人黄色片 | 91福利在线观看 | 国产麻豆精品久久 | 免费观看一级成人毛片 | a精品视频| 日本中文字幕视频 | 天堂av色婷婷一区二区三区 | 久久久精品国产一区二区电影四季 | 久久免费视频国产 | 久久99日韩 | 区一区二区三区中文字幕 | 日韩精品一区不卡 | 成人福利在线播放 | 免费观看国产精品视频 | 国产精品理论视频 | 婷婷丁香狠狠爱 | 六月色婷 | 五月天综合激情网 | 欧美日韩不卡一区 | 国产黄色av影视 | 91香蕉视频在线 | 99精品视频在线播放观看 | 久久久久久久久久伊人 | 国产亚洲视频在线观看 | 久久在线观看视频 | 久久精品国产免费看久久精品 | 一级黄色大片在线观看 | 成人免费视频播放 | 国产精品久久久久久久7电影 | 中文字幕专区高清在线观看 | 激情欧美一区二区三区免费看 | 日韩高清精品一区二区 | 五月婷婷开心 | 一区二区三区精品在线视频 | 国产精品1024| 在线 高清 中文字幕 | 久草视频在线播放 | 日韩av成人在线观看 | 91在线视频免费 | 日韩视频中文字幕在线观看 | 人人澡人人添人人爽一区二区 | 国产精品久久久久久久久久东京 | 国内精品毛片 | 狠狠色狠狠色终合网 | 亚洲在线激情 | 亚洲视频免费在线观看 | 久草视频中文在线 | av在线电影网站 | 亚洲a免费| 午夜三级影院 | 黄色小说免费观看 | 国产精品麻豆果冻传媒在线播放 | 国产精品永久久久久久久久久 | 亚洲电影久久 | 9在线观看免费高清完整版 玖玖爱免费视频 | 国产精品毛片一区二区 | 国产精品久久久久久久久岛 | 波多野结衣一区 | 免费av在线网站 | 日本在线成人 | 久久精品福利 | 国产字幕av| 国产黄色网| 中日韩在线视频 | 999久久久精品视频 日韩高清www | 成年人免费在线观看 | 丁香综合av | 免费在线观看av | 久草五月 | 五月婷婷导航 | 日韩欧美精品在线 | 日韩成人黄色 | 国产精品一区二区麻豆 | 日韩网站一区 | 久久99精品久久久久久三级 | 久久亚洲福利视频 | 欧洲精品亚洲精品 | 色射爱 | 成人国产网址 | 成人在线观看资源 | 日韩网站中文字幕 | 亚洲天堂网站视频 | 麻豆91小视频 | 国产午夜三级一区二区三桃花影视 | 国产一级视频在线免费观看 | 在线精品视频免费播放 | 欧美激情另类文学 | 国产xvideos免费视频播放 | 日韩高清精品免费观看 | 国产精品久久久久久久av电影 | 亚洲精品国产精品乱码在线观看 | 九色视频网址 | 看片网站黄 | 久久再线视频 | 国产精品综合久久久久 | 国产精品美乳一区二区免费 | 香蕉视频色 | 最新av免费在线观看 | 久久久91精品国产一区二区三区 | 日韩在线电影 | 日本动漫做毛片一区二区 | 免费av大片 | 日本激情视频中文字幕 |