久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

java實現(xiàn)國產sm4加密算法

瀏覽:2日期:2022-08-19 08:52:22
前言

今天給大家?guī)硪粋€國產SM4加密解密算法的java后端解決方案,代碼完整,可以直接使用,希望給大家?guī)韼椭?,尤其是做政府系統(tǒng)的開發(fā)人員,可以直接應用到項目中進行加密解密。畫重點!是SM4哦,不是SM。哈哈,各位要在知識里遨游,不要想歪。正文開始~

國產SM4加密解密算法概念介紹

SMS4算法是在國內廣泛使用的WAPI無線網(wǎng)絡標準中使用的加密算法,是一種32輪的迭代非平衡Feistel結構的分組加密算法,其密鑰長度和分組長度均為128。SMS4算法的加解密過程中使用的算法是完全相同的,唯一不同點在于該算法的解密密鑰是由它的加密密鑰進行逆序變換后得到的。SMS4分組加密算法是中國無線標準中使用的分組加密算法,在2012年已經(jīng)被國家商用密碼管理局確定為國家密碼行業(yè)標準,標準編號GM/T 0002-2012并且改名為SM4算法,與SM2橢圓曲線公鑰密碼算法,SM3密碼雜湊算法共同作為國家密碼的行業(yè)標準,在我國密碼行業(yè)中有著極其重要的位置。SMS4算法的分組長度為128bit,密鑰長度也是128bit。加解密算法均采用32輪非平衡Feistel迭代結構,該結構最先出現(xiàn)在分組密碼LOKI的密鑰擴展算法中。SMS4通過32輪非線性迭代后加上一個反序變換,這樣只需要解密密鑰是加密密鑰的逆序,就能使得解密算法與加密算法保持一致。SMS4加解密算法的結構完全相同,只是在使用輪密鑰時解密密鑰是加密密鑰的逆序。S盒是一種利用非線性變換構造的分組密碼的一個組件,主要是為了實現(xiàn)分組密碼過程中的混淆的特性和設計的。SMS4算法中的S盒在設計之初完全按照歐美分組密碼的設計標準進行,它采用的方法是能夠很好抵抗差值攻擊的仿射函數(shù)逆映射復合法。

SM4加密算法應用場景

SM4常用于政府系統(tǒng)的數(shù)據(jù)傳輸加密,比如當我們前端向后臺傳參數(shù)的時候,可以使用此算法。對參數(shù)的數(shù)據(jù)進行加密,然后后臺對加密的數(shù)據(jù)進行解密再存儲到數(shù)據(jù)庫中,保證數(shù)據(jù)傳輸過程中,不受泄露。本次提供的方案不僅提供sm4的加密解密,還提供了md5算法的完整性防篡改校驗。

Java端解決方案

對于java端,我們使用的基于spring的aop切面和自定義注解來實現(xiàn)。整體思路為,當后臺開啟加密解密的時候,針對于打上注解的方法,尋找實體類中打上注解的字段進行加密和解密。再從前端傳遞請求的request中取出md5的header,進行md5的完整性,防篡改校驗。

首先我們必須說的是兩個工具類,一個是SM4Utils工具類,另一個則是md5工具類。下面先來說一下SM4Utils。這個工具類用于SM4算法的加密和解密及密碼校驗。我們先直接看代碼,然后后面對此進行解釋。

SM4Utils

public class Sm4Utils { private static final String ENCODING = 'UTF-8'; public static final String ALGORIGTHM_NAME = 'SM4'; public static final String ALGORITHM_NAME_ECB_PADDING = 'SM4/ECB/PKCS7Padding'; public static final int DEFAULT_KEY_SIZE = 128; public Sm4Utils() { } static { Security.addProvider(new BouncyCastleProvider()); } /** * @Description:生成ecb暗號 */ private static Cipher generateEcbCipher(String algorithmName, int mode, byte[] key) throws Exception { Cipher cipher = Cipher.getInstance(algorithmName,BouncyCastleProvider.PROVIDER_NAME); Key sm4Key = new SecretKeySpec(key, ALGORIGTHM_NAME); cipher.init(mode, sm4Key); return cipher; } /** * @Description:自動生成密鑰 */ public static byte[] generateKey() throws Exception { return generateKey(DEFAULT_KEY_SIZE); } public static byte[] generateKey(int keySize) throws Exception { KeyGenerator kg = KeyGenerator.getInstance(ALGORIGTHM_NAME, BouncyCastleProvider.PROVIDER_NAME); kg.init(keySize, new SecureRandom()); return kg.generateKey().getEncoded(); } /** * @Description:加密 */ public static String encryptEcb(String hexKey, String paramStr, String charset) throws Exception { String cipherText = ''; if (null != paramStr && !''.equals(paramStr)) { byte[] keyData = ByteUtils.fromHexString(hexKey); charset = charset.trim(); if (charset.length() <= 0) {charset = ENCODING; } byte[] srcData = paramStr.getBytes(charset); byte[] cipherArray = encrypt_Ecb_Padding(keyData, srcData); cipherText = ByteUtils.toHexString(cipherArray); } return cipherText; } /** * @Description:加密模式之ecb */ public static byte[] encrypt_Ecb_Padding(byte[] key, byte[] data) throws Exception { Cipher cipher = generateEcbCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.ENCRYPT_MODE, key); byte[] bs = cipher.doFinal(data); return bs; } /** * @Description:sm4解密 */ public static String decryptEcb(String hexKey, String cipherText, String charset) throws Exception { String decryptStr = ''; byte[] keyData = ByteUtils.fromHexString(hexKey); byte[] cipherData = ByteUtils.fromHexString(cipherText); byte[] srcData = decrypt_Ecb_Padding(keyData, cipherData); charset = charset.trim(); if (charset.length() <= 0) { charset = ENCODING; } decryptStr = new String(srcData, charset); return decryptStr; } /** * @Description:解密 */ public static byte[] decrypt_Ecb_Padding(byte[] key, byte[] cipherText) throws Exception { Cipher cipher = generateEcbCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.DECRYPT_MODE, key); return cipher.doFinal(cipherText); } /** * @Description:密碼校驗 */ public static boolean verifyEcb(String hexKey,String cipherText,String paramStr) throws Exception { boolean flag = false; byte[] keyData = ByteUtils.fromHexString(hexKey); byte[] cipherData = ByteUtils.fromHexString(cipherText); byte[] decryptData = decrypt_Ecb_Padding(keyData,cipherData); byte[] srcData = paramStr.getBytes(ENCODING); flag = Arrays.equals(decryptData,srcData); return flag; } /** * @Description:測試類 */ public static void main(String[] args) { try { String json = '{'name':'color','sex':'man'}'; // 自定義的32位16進制密鑰 String key = 'cc9368581322479ebf3e79348a2757d9'; String cipher = Sm4Utils.encryptEcb(key, json,ENCODING); System.out.println(cipher); System.out.println(Sm4Utils.verifyEcb(key, cipher, json)); json = Sm4Utils.decryptEcb(key, cipher,ENCODING); System.out.println(json); } catch (Exception e) { e.printStackTrace(); } }}

我們來仔細看一下上面的代碼,首先定義了個4個靜態(tài)不可修改都變量,用于下方方法的使用。包括編碼utf-8,密碼名稱sm4,密碼的分組方式SM4/ECB/PKCS7Padding和默認的key值長度128。整體的方法我們分為生成ecb暗號,自動生成密鑰,加密,解密,密碼校驗的算法。以上為sm4utils的核心代碼。

MD5Utils

/** * @Description:md5加密工具 */public class Md5Utils { /** * @Description:獲得md5加密串 */ public static String getMD5String(String str) { try { MessageDigest md = MessageDigest.getInstance('MD5'); md.update(str.getBytes()); return new BigInteger(1, md.digest()).toString(16); } catch (Exception e) { e.printStackTrace(); return null; } }}

MD5Utils主要用于對參數(shù)的完整性校驗,防止篡改。

此時我們已經(jīng)實現(xiàn)了主要的加密解密工具,接下來實現(xiàn)spring的aop自定義注解,自定義注解我們要實現(xiàn)三個。第一個是加密注解,用于方法上的,表示該方法的參數(shù)需要被加密。第二個是解密注解,用于方法上的,表示該方法的參數(shù)需要被解密。第三個是字段加密解密注解,用于標識實體類的字段是否需要被加密和解密。

加密的自定義注解

@Documented@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Order(-2147483648)public @interface EncryptMethod {}

可以看到此時打了一個order注解,-2147483648用于標識優(yōu)先級最高。

解密的自定義注解

@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Order(-2147483648)@Inheritedpublic @interface DecryptMethod {}加密解密字段的自定義注解

@Documented@Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@Order(-2147483648)public @interface EncryptField {}

注解的準備工作已經(jīng)做完,接下來就是實現(xiàn)sm4的切面方法。不了解spring的aop的實現(xiàn)方法,可以去先補一下spring的相關知識,這里不做贅述。我們這里采用的切面都是環(huán)繞通知,切面的切點是加密解密的注解。

加密解密切面的實現(xiàn)

說一下切面的答題實現(xiàn)思路。我們可以看到@ConditionalOnProperty(prefix = 'sm4', value = 'enable', matchIfMissing = false),這個我們做成了根據(jù)配置文件的配置進行動態(tài)的開關。我們在appication.yml文件中進行如下的配置。這樣切面是否生效就取決于配置。然后我們捕捉加密的注解和解密的注解,然后對加了注解的方法中的邏輯進行加密和解密。下方代碼的切點方法為EncryptAOPCut和DecryptAOPCut。隨后通過around對切點進行捕捉。分別調用的核心的加密算法encryptMethodAop和解密算法decryptMethodAop。

sm4: enable: true

核心的加密解密算法都是使用環(huán)繞通知的ProceedingJoinPoint類,從他的對象中我們可以取到spring的各種參數(shù),包括request請求,請求的參數(shù)和response對象。

/** * @Description:sm4加密解密切面 */@Order(-2147483648)@Aspect@Component@ConditionalOnProperty(prefix = 'sm4', value = 'enable', matchIfMissing = false)public class Sm4Aspect { private Logger log = LoggerFactory.getLogger(Sm4Aspect.class); private static final String DEFAULT_KEY = 'cc9368581322479ebf3e79348a2757d9'; public Sm4Aspect() { } @Pointcut('@annotation(com.jichi.aop.sm4.EncryptMethod)') public void EncryptAOPCut() { } @Pointcut('@annotation(com.jichi.aop.sm4.DecryptMethod)') public void DecryptAOPCut() { } @Around('EncryptAOPCut()') public Object encryptMethodAop(ProceedingJoinPoint joinPoint) { Object responseObj = null; try { responseObj = joinPoint.proceed(); this.handleEncrypt(responseObj); //md5加密 String md5Data = Md5Utils.getMD5String(new Gson().toJson(responseObj)); SpringContextUtil.getHttpServletResponse().setHeader('md5',md5Data); } catch (Throwable throwable) { throwable.printStackTrace(); this.log.error('encryptMethodAop處理出現(xiàn)異常{}', throwable); } return responseObj; } @Around('DecryptAOPCut()') public Object decryptMethodAop(ProceedingJoinPoint joinPoint) { Object responseObj = null; try { responseObj = joinPoint.getArgs()[0]; //throw new RuntimeException('md5校驗失敗'); this.handleDecrypt(responseObj); String md5 = ''; md5 = Md5Utils.getMD5String(new Gson().toJson(responseObj)); System.out.println(md5); String origianlMd5 = ''; origianlMd5 = SpringContextUtil.getHttpServletRequest().getHeader('md5'); if(origianlMd5.equals(md5)){responseObj = joinPoint.proceed(); }else{this.log.error('參數(shù)的md5校驗不同,可能存在篡改行為,請檢查!');throw new Exception('參數(shù)的md5校驗不同,可能存在篡改行為,請檢查!'); } } catch (Throwable throwable) { throwable.printStackTrace(); this.log.error('decryptMethodAop處理出現(xiàn)異常{}', throwable); } return responseObj; } private void handleEncrypt(Object requestObj) throws Exception { if (!Objects.isNull(requestObj)) { Field[] fields = requestObj.getClass().getDeclaredFields(); Field[] fieldsCopy = fields; int fieldLength = fields.length; for(int i = 0; i < fieldLength; ++i) {Field field = fieldsCopy[i];boolean hasSecureField = field.isAnnotationPresent(EncryptField.class);if (hasSecureField) { field.setAccessible(true); String plaintextValue = (String)field.get(requestObj); String encryptValue = Sm4Utils.encryptEcb(DEFAULT_KEY, plaintextValue, ''); field.set(requestObj, encryptValue);} } } } private Object handleDecrypt(Object responseObj) throws Exception { if (Objects.isNull(responseObj)) { return null; } else { Field[] fields = responseObj.getClass().getDeclaredFields(); Field[] fieldsCopy = fields; int fieldLength = fields.length; for(int i = 0; i < fieldLength; ++i) {Field field = fieldsCopy[i];boolean hasSecureField = field.isAnnotationPresent(EncryptField.class);if (hasSecureField) { field.setAccessible(true); String encryptValue = (String)field.get(responseObj); String plaintextValue = Sm4Utils.decryptEcb(DEFAULT_KEY, encryptValue, ''); field.set(responseObj, plaintextValue);} } return responseObj; } }}代碼實際應用

首先我們可以定義一個實體類,對實體類的字段進行加密或解密的標識。我們這里建立了一個Info實體類,對于其中的name屬性,我們加了注解加密解密字段,對于sex屬性我們不做任何處理。

@Datapublic class Info { @EncryptField private String name; private String sex;}

然后我們對于controller方法打上加密的方法或解密的方法。

@RestController@RequestMapping('/demo/test')public class TestController { @PostMapping('/saveInfo') @DecryptMethod public HashMap<String,String> saveInfo(@RequestBody Info info) { HashMap<String,String> result = new HashMap<String,String>(); String name = info.getName(); System.out.println(name); String sex= info.getSex(); System.out.println(sex); result.put('flag','1'); result.put('msg','操作成功'); return result; }}

注意到方法上的注解@DecryptMethod,以為這著我們的這個方法將會進行解密。如果是@EncryptMethod,則代表對方法進行加密。

總結

到此為止,涉及到java后端的代碼解決方案已經(jīng)完畢。示例代碼已經(jīng)給出,大家可以直接使用,本人親測有效。文中難免有不足,歡迎大家批評指正。

以上就是java實現(xiàn)國產sm4加密算法的詳細內容,更多關于Java 國產sm4加密算法的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 日韩一区二区三区在线观看 | 国产精品1区2区 | 国产丝袜在线 | 欧美成年网站 | 在线观看第一页 | 九九热精 | 欧美不卡视频一区发布 | 欧美在线高清 | 在线精品亚洲欧美日韩国产 | 国产精品久久久久久久久污网站 | 天天天天综合 | 一级黄色录像免费观看 | 黄色精品视频 | 午夜网址 | 欧美麻豆 | 久久久精品国产 | 一区二区免费视频 | 91久久久久久久久久久久久久久久 | 亚洲乱码国产乱码精品精的特点 | 亚洲成年人影院 | 欧美一区在线视频 | 精品一区二区三区免费 | 狠狠操操 | 久艹伊人 | 一级电影免费在线观看 | 色综合久久88色综合天天 | 国产中文一区二区三区 | 娇妻被朋友调教成玩物 | 国产精品午夜在线观看 | 国产一区二精品区在线 | 久久精品这里有 | 综合av第一页 | 在线欧美亚洲 | 狠久久 | 成年人免费在线视频 | 一区二区三区四区在线 | 精品国产乱码久久久久久1区2区 | 午夜视频网站 | 电家庭影院午夜 | 在线视频 欧美日韩 | 色伊人久久 | 日本激情视频一区二区三区 | 久久久久久久久久久久久久av | 好色视频在线观看 | 国产日韩欧美在线 | 国产中文一区 | 欧美日韩精品一区二区三区在线观看 | 青娱乐国产精品视频 | 日本一区二区三区在线视频 | 一区二区三区高清不卡 | 一区电影 | 中文字幕国产区 | 天天操天天碰 | 国产免费一区二区 | 中文字幕在线免费 | www.日韩视频 | 久热99| 国产成人精品999在线观看 | 国产美女网站 | 免费v片| 免费一级黄色电影 | 久久久精品网站 | 国产一区二区视频在线播放 | 国产主播一区 | 国产精品久久久久久亚洲调教 | 国产精品久久久久久久美男 | 欧美国产日韩一区二区 | 国内精品一区二区 | 九九热在线免费视频 | 久久久久综合狠狠综合日本高清 | 亚洲欧美自拍视频 | 国产精品九九九 | 国产福利片在线 | 高清国产一区二区三区四区五区 | 久久777| 国产美女自拍视频 | 国产精品二区三区 | 伊人伊人伊人 | 欧美精品导航 | 成人久久久久久久 | 国产一区二区三区久久 | 影音先锋亚洲资源 | 欧美一区二区三区四区不卡 | 成人午夜免费视频 | 视频精品一区 | 美女超碰 | yiren22成人网| 自拍一区视频 | 久久精品欧美一区二区三区不卡 | 一本大道久久a久久精二百 国产精品片aa在线观看 | 毛片网站免费在线观看 | 99精品国产高清一区二区麻豆 | 一级a性色生活片久久毛片波多野 | 日本在线网| 国产激情网 | 久久99精品国产麻豆婷婷洗澡 | 91亚洲狠狠婷婷综合久久久 | 国产一级免费在线 | 成人激情视频在线观看 | 亚洲精品v | 日韩一区二区不卡 | 午夜影院黄色 | 日本在线观看一区 | 国产国拍亚洲精品av | 久综合网 | 久久免费精品视频 | 99精品99| 欧美在线视频播放 | 国产午夜精品久久久久久久 | 97超碰人人| a在线观看| 羞羞视频网站免费看 | 久久久精品国产 | 久久久久久久久久影院 | 欧美视频免费 | 午夜影院在线观看版 | 91国偷自产一区二区三区亲奶 | 97在线播放| 玖玖在线精品 | 国产一区 | 亚州中文字幕 | 欧美精品 在线观看 | 精品视频免费观看 | 91一区二区三区 | 国产黄色影视 | 玖玖久久 | а天堂中文最新一区二区三区 | 亚洲精品美女视频 | 96久久久久久| 国产一级特黄aaa大片评分 | 亚洲一二三区在线观看 | 日韩精品www | 国产成人99久久亚洲综合精品 | 精品欧美日韩 | 久久久成人网 | 成人xxx| 成人久久久精品乱码一区二区三区 | 欧美日韩国产精品久久久久 | 欧美日韩午夜 | 天堂av在线免费观看 | 国产在线一级视频 | 奇米成人 | 国产欧美精品一区二区色综合朱莉 | 精品久久久久国产免费 | 99精品视频网 | 91社区在线播放 | 日本伊人网站 | 欧美成人高清视频 | 一级特黄网站 | xxxx性欧美 | 国产精品视频免费看 | 日本一区二区三区中文字幕 | www.国产精品.com | 国产欧美一区二区精品婷 | 毛片91 | 国产黄色av| 精品国产一区二区在线 | 成人免费av | 中出片| 在线成人免费 | 精品久久久久久国产 | 国产福利在线观看 | 一级片视频免费 | 亚洲一区二区三区免费观看 | 成人在线免费视频 | 91精品国产综合久久久蜜臀粉嫩 | 日韩a在线| 国产精品日本欧美一区二区三区 | 日本亚洲一区 | 欧美黑人一级爽快片淫片高清 | 2019亚洲日韩新视频 | 国产精品久久久久久亚洲调教 | 久久国产欧美日韩精品 | 成人免费视频7777777 | 中文字幕第二十六页页 | 成年人精品视频 | 免费成人在线观看视频 | 日韩久久精品电影 | 91黄在线观看 | 麻豆国产免费 | 91短视频版在线观看免费大全 | 夫妻午夜影院 | 日韩在线视屏 | 亚洲精品成人 | 9999久久久久 | 综合 欧美 亚洲日本 | 久久国产精品系列 | 亚洲精品免费视频 | aa毛片 | 亚洲第一成人在线视频 | 精品在线一区二区 | 国产精品亚洲精品 | 亚洲欧美国产一区二区三区 | 91免费观看在线 | 亚洲国产精品久久久久 | 在线免费观看毛片 | 日韩欧美一级片 | 欧美激情在线精品一区二区三区 | 国产精品久久久久久久 | av天空| 蜜臀精品久久久久久蜜臀 | 久久精品一级 | 伦理自拍 | 九色网址| 色网网站 | 国内精品99 | 国产精品久久九九 | 日韩一区二区三区精品 | 狠狠人人 | 白浆视频在线观看 | 亚洲福利国产 | 亚洲精品电影在线观看 | 色婷婷国产精品 | 亚洲激情在线 | 午夜看片 | 久久久夜夜夜 | 国产传媒在线视频 | 久久国产精品视频 | 91aiai| 久久99深爱久久99精品 | 国产高清第一页 | 成人影音 | 夫妻午夜影院 | 欧美日韩免费一区二区三区 | 中文字幕 国产精品 | 亚洲欧洲一区 | 午夜在线视频免费观看 | 久久久综合视频 | 性色在线视频 | 国产高清亚洲 | 欧美福利| 中国免费看的片 | 久久久91 | 美日韩成人 | 欧美视频在线免费看 | 黄毛片| 九九色影院 | 亚洲av毛片一区二二区三三区 | 欧美黄视频 | 国产欧美精品一区二区 | 久久亚洲一区二区 | 中文在线一区二区 | 国产精品99在线观看 | 黄色电影在线免费观看 | 亚洲人成网亚洲欧洲无码 | 国产成人一区二区三区影院在线 | 欧美综合国产精品久久丁香 | 天堂在线中文 | 一级黄色片看看 | 成人影院网站ww555久久精品 | 天堂资源在线 | 日本日韩中文字幕 | 欧美精品成人一区二区三区四区 | 在线免费观看一区 | 午夜毛片| 在线视频自拍 | 91一区 | 国产精品中文字幕在线观看 | 国产91在线观看 | 国产精品久久久久久久一区探花 | 国产精品免费一区二区三区四区 | 久久综合久久综合久久 | 亚洲精品国产一区 | 成人免费视频网站在线看 | 日韩久久久久 | 色综合色综合 | 一级特黄网站 | 亚洲中字在线 | 国产精品高潮呻吟久久av野狼 | 另类久久 | 亚洲精品免费在线观看 | 91免费观看视频 | 国产精品一区二区三区在线 | 久久精品高清视频 | 亚洲精品网址 | 中文字幕精品一区 | 国产一区中文字幕 | 少妇黄色一级片 | 亚洲精品一区二三区 | 亚洲成人一区二区 | 国产激情一区二区三区 | 国产免费一区二区 | 在线一区观看 | 女人高潮特级毛片 | a级在线| 三区视频| 密室大逃脱第六季大神版在线观看 | 日韩欧美国产精品综合嫩v 国产高清av在线一区二区三区 | 亚洲一区中文 | 久久99国产精品久久99大师 | 99久久久久久 | 色伊人| 日本中文字幕在线播放 | 日韩av高清| 中文字幕婷婷 | 亚洲一区 | 日韩日韩日韩日韩日韩日韩 | 亚洲欧美一区二区三区在线 | 91精品久久久久 | 国产一区二区视频在线观看 | 免费黄色毛片视频 | 成人免费视频网 | 欧美日韩亚洲综合 | 久在线视频 | 视频一区二区国产 | 99久久婷婷国产综合精品 | 欧洲成人在线视频 | 久久99久久99精品免视看婷婷 | av中文字幕网 | 国产精品久久久久久吹潮 | 特一级毛片 | 久草久草久 | 五月婷婷激情 | 亚洲高清在线 | 国产精品视频网站 | 玖玖久久| 午夜精品网站 | 久久一区国产 | 欧美日韩国产91 | 一区二区中文字幕 | 国产精品亚洲一区 | 我要看一级黄色 | 伊人久久综合 | 日本一区二区不卡视频 | 成年人精品视频 | 日日爱视频 | 日韩理伦在线 | 日韩电影免费在线观看中文字幕 | 黄色一级片黄色一级片 | 免费a爱片猛猛 | 一级日批片 | a级片在线观看 | 91爱啪啪 | 久久久.com| 日韩免费网站 | 国产伊人99| 久草免费福利 | 国产婷婷精品av在线 | 免费av播放 | 日韩1区3区4区第一页 | 精品欧美一区二区在线观看 | 亚洲精品四区 | 国产区在线观看 | 国产高清美女一级a毛片久久 | 久久91| 小草av| 亚洲精品视频免费 | 久久夜夜 | 国产一区二区三区在线免费观看 | 特级丰满少妇一级aaaa爱毛片 | 欧美一区二区三区免费 | 成人福利在线 | 国产一级毛片国语一级 | 精品国产黄a∨片高清在线 日韩一区二 | 91精品久久久久久久久久 | 成人爽a毛片一区二区免费 美女高潮久久久 | 成人黄色在线视频 | 久久国产精品视频 | 草樱av | 亚洲电影一区 | 国外成人在线视频网站 | 国产美女av | 久久精品欧美一区二区三区不卡 | 久久久久久久91 | 奇米av| 亚洲免费人成在线视频观看 | 91精品国产综合久久婷婷香蕉 | 亚洲精品99| 一级欧美日韩 | 日韩福利| 中文字幕高清在线 | 久久亚洲一区二区三 | 国产在线一级视频 | 男女羞羞视频免费在线观看 | 久久久久久久久久久亚洲 | 成人午夜在线视频 | 影音先锋中文字幕在线 | 国产一区二区三区久久久 | 国产精品一区二区三区在线 | 久久亚洲一区 | 免费毛片一区二区三区久久久 | 一级片黄片毛片 | eeuss国产一区二区三区四区 | 色十八 | 久久久一区二区 | 欧美成人a∨高清免费观看 在线视频成人 | 色婷婷亚洲国产女人的天堂 | 国产福利一区二区三区视频 | 91在线视频福利 | 国产精品美女久久久久久免费 | 午夜精品久久久久久久星辰影院 | 91视频日韩| 国内精品一区二区 | 免费一级片 | 国产精品久久久久久久久免费 | 97av在线视频 | 欧美日韩一级电影 | 久久波多野结衣 | 五月婷婷丁香婷婷 | 亚洲欧美韩国 | 日本三级国产 | 亚洲视频一区二区在线 | 在线日韩欧美 | 国产精品中文字幕在线 | 国产日韩av在线 | 成人av观看 | 蜜桃免费一区二区三区 | 91在线免费视频 | 亚洲国产高清高潮精品美女 | aaaaaaa片毛片免费观看 | 国产成人午夜高潮毛片 | 毛片毛片毛片毛片毛片毛片 | 91精品久久久久久久91蜜桃 | 午夜精品一区二区三区在线视频 | 天天操一操| 99精品在线 | 亚洲国产精品一区二区三区 | 欧美一级片在线观看 | 久久久久久国产精品高清 | 精品国产一区二区在线 | 日韩精品久久久久久 | 久久久久国产 | 日韩在线中文 | 久久精品日 | 成人黄色电影小说 | 成人爽a毛片一区二区免费 亚洲自拍偷拍精品 | 国产精品久久久久久久久福交 | 999这里只有精品 | 在线观看精品91福利 | 精品无码久久久久久国产 | 亚洲国产精品精华液com | 少妇久久久 | 久久精品国产精品青草 | 欧美日韩午夜精品 | 免费v片| 日本一区二区三区免费观看 | 国产高清小视频 | www.国产| 超碰97人人人人人蜜桃 | 精品久久久久久久久久久久 | 日韩在线永久免费播放 | 欧美国产日韩一区 | 人和拘一级毛片 | 天天干天天操 | 亚洲综合无码一区二区 | 中文字幕久久精品 | a在线免费观看 | 国产精品二区三区 | 欧美激情国产日韩精品一区18 | 美女福利视频网站 | heyzo在线观看| 日韩欧美一区二区三区四区 | 四虎影院网站 | 欧美一区第一页 | 亚色在线 | 欧美成人精品在线 | 欧美啪啪| 中文字字幕在线 | 久久久久国产视频 | 国产成人精品久久二区二区91 | 黄色一级网站 | 亚洲永久免费 | 亚洲视频一 | 91视频网 | 国产视频一视频二 | 亚洲免费视频在线观看 | 国产精品一区二区三区在线 | 最近最新中文字幕 | 亚洲一区中文字幕在线观看 | 一本一道久久a久久精品逆3p | 国产综合在线视频 | 国产精品三级久久久久久电影 | 精品久久一区二区 | 欧美精品久久久 | 国产精品美女久久久久aⅴ国产馆 | 国产v片| 亚洲cb精品一区二区三区 | 999在线视频免费观看 | 亚洲一级毛片 | 99视频在线播放 | 欧美在线a | 久久99国产精品久久99果冻传媒 | 亚洲日韩中文字幕一区 | 精品国产一区二区在线 | 日韩www | 亚洲一区二区三区四区在线 | 天天干,夜夜操 | 精品久久中文字幕 | 精品一区二区电影 | 色婷婷一区二区三区 | 国产成人精品一区二区三区 | 国产一区二区视频精品 | 毛片在线网站 | 日本免费三片免费观看 | 五月天婷婷综合 | 久久国产精品免费一区二区三区 | 亚洲国产福利一区 | 天天澡天天狠天天天做 | 一区二区三区精品 | 久久天堂 | 日韩欧美国产网站 | 国产一区视频在线 | 中文字幕一区二区三区免费视频 | av成人在线观看 | 国产一区二区资源 | 黄网在线免费观看 | 国产一区二区精品久久岳 | 欧美一级电影 | 在线播放91| 亚洲 欧美 日韩 精品 | 最新国产精品 | 久久精品亚洲 | 午夜免费 | 曰批免费视频播放免费 | 欧美在线观看一区 | 国产精品一区二区三区在线 | 69日影院 | 中文字幕视频在线观看 | 国产黄色网址在线观看 | 日韩在线看片 | 亚洲天堂一区二区 | 国产成人在线免费观看 | 激情亚洲| 欧美日韩亚洲成人 | 中文字字幕在线 | a在线播放| 亚洲精品一区二区三区在线 | 亚洲二区在线视频 | 91视频在线播放视频 | 欧美xxxx色视频在线观看免费 | 亚洲综合首页 | 日韩一区在线播放 | 中文av字幕 | 在线观看免费av电影 | 无码国模国产在线观看 | 黄色一级大片视频 | 丁香婷婷在线观看 | 国产三区在线观看视频 | 国产高清一区 | 91久久看片 | 精品国精品国产自在久不卡 | 99色资源| 伊人网91 | 国产在线中文字幕 | 久久久久久91亚洲精品中文字幕 | 99精品国产高清一区二区麻豆 | 国产在线精品一区二区三区 | 91久久久久久久久久久久久久 | 福利网站在线观看 | 亚洲欧洲精品成人久久奇米网 | 99精品一区二区 | 综合婷婷 | 越南性xxxx精品hd | 先锋资源在线观看 | 一区二区三区在线播放 | 国产精品视频网 | 亚洲大片一区 | 久久天堂电影 | 精品一区二区三区免费毛片爱 | 日韩精品视频在线观看一区二区 | 九九免费精品视频 | 在线观看羞羞 | 天天久久 | 91久久久久久久久久久久久久 | 在线看欧美 | 欧美14一18处毛片 | 亚洲国产日韩欧美 | 亚洲成人一区二区三区 | 国产精品一区一区三区 | 蜜桃视频网站在线观看 | 青草视频网站 | 伊人久操 | 欧美一区二区在线 | 欧美高清视频一区 | 91久久久久久久久久久久久久久久 | 精品福利av导航 | 四虎永久在线观看 | gogo熟少妇大胆尺寸 | 久久99精品国产99久久6尤 | 国际精品久久 | 综合网亚洲 | 亚洲黄色片免费 | 亚洲一区在线日韩在线深爱 | 欧美日韩精品免费观看视频 | 成av在线 | 日本三级电影免费 | 一区二区三区四区在线 | 亚洲一区中文字幕永久在线 | 操久在线 | 久久成人在线 | 综合一区 | 久久久久久久国产 | 影音先锋中文字幕在线 | 日韩电影在线 | 国产免费看 | 日本天堂一区二区 | 亚洲一区在线观看视频 | 激情欧美一区二区三区中文字幕 | 亚洲视频中文字幕 | 国产精品久久久久久 | avhd101在线成人播放 | 国产精品一区久久久久 | 麻豆精品国产91久久久久久 | 制服 丝袜 激情 欧洲 亚洲 | 亚洲三级在线播放 | 国产成人精品一区二 | 欧美日韩一区二区视频在线观看 | av一区二区三区在线观看 | 久久久国产一区二区三区 | 午夜免费高清视频 | 99影视 | 欧美精品一区二区视频 | 国产精品91视频 | 黄色永久网站 | 羞羞视频网站 |