精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java用poi完成Excel導(dǎo)出數(shù)據(jù)脫敏

開源
脫敏的百度百科的定義:是指對某些敏感信息通過脫敏規(guī)則進(jìn)行數(shù)據(jù)的變形,實(shí)現(xiàn)敏感隱私數(shù)據(jù)的可靠保護(hù)。在涉及客戶安全數(shù)據(jù)或者一些商業(yè)性敏感數(shù)據(jù)的情況下,在不違反系統(tǒng)規(guī)則條件下,對真實(shí)數(shù)據(jù)進(jìn)行改造并提供測試使用,如身份證號、手機(jī)號、卡號、客戶號等個人信息都需要進(jìn)行數(shù)據(jù)脫敏。

 近日筆者更新了EasyPoi的4.3版本,主要功能是實(shí)現(xiàn)了數(shù)據(jù)脫敏,方便大家日常的脫敏需求。

脫敏的百度百科的定義:是指對某些敏感信息通過脫敏規(guī)則進(jìn)行數(shù)據(jù)的變形,實(shí)現(xiàn)敏感隱私數(shù)據(jù)的可靠保護(hù)。在涉及客戶安全數(shù)據(jù)或者一些商業(yè)性敏感數(shù)據(jù)的情況下,在不違反系統(tǒng)規(guī)則條件下,對真實(shí)數(shù)據(jù)進(jìn)行改造并提供測試使用,如身份證號、手機(jī)號、卡號、客戶號等個人信息都需要進(jìn)行數(shù)據(jù)脫敏。

這塊如果嚴(yán)格按照定義,實(shí)現(xiàn)身份證等數(shù)據(jù)的變形,筆者還沒實(shí)現(xiàn),因?yàn)檫@個設(shè)計(jì)脫敏規(guī)則對應(yīng),需要用戶指定規(guī)則,我們內(nèi)部的脫敏系統(tǒng)還是有些邏輯在的,這里就不細(xì)說了,這次主要實(shí)現(xiàn)的是加*號【后期再加自定義吧,畢竟常見的都是星號】,方便導(dǎo)出數(shù)據(jù)的時候隱藏非必須字段。


維護(hù)數(shù)據(jù)

主要功能

實(shí)現(xiàn)的功能主要分為三種:

  • 1. 隱去收尾,適合固定長度,比如:手機(jī)號,身份證
  • 2. 隱去部分,不固定長度,比如:姓名,地址
  • 3. 隱去特定部分,特別表示保留,比如:郵箱

簡單地實(shí)現(xiàn)的效果為

  • 13112345678 --> 131****1234
  • 張三 -->張*
  • 羅納爾迪尼奧 --> 羅納***奧
  • wuyun@163.com -> w****@16com.com

脫敏效果

實(shí)現(xiàn)方法

1.注解

注解還是通過@Excel 的屬性來實(shí)現(xiàn)的 ,在@Excel 這個地方加入了desensitizationRule屬性,可以在desensitizationRule屬性配置對應(yīng)的格式遍可以得到對應(yīng)的結(jié)果

  1. /** 
  2.   * 數(shù)據(jù)脫敏規(guī)則 
  3.   * 規(guī)則1: 采用保留頭和尾的方式,中間數(shù)據(jù)加星號 
  4.   * 如: 身份證  6_4 則保留 370101********1234 
  5.   *    手機(jī)號   3_4 則保留 131****1234 
  6.   * 規(guī)則2: 采用確定隱藏字段的進(jìn)行隱藏,優(yōu)先保留頭 
  7.   * 如: 姓名   1,3 表示最大隱藏3位,最小一位 
  8.   *          李 -->  * 
  9.   *          李三 --> 李* 
  10.   *          張全蛋  --> 張*蛋 
  11.   *          李張全蛋 --> 李**蛋 
  12.   *          尼古拉斯.李張全蛋 -> 尼古拉***張全蛋 
  13.   * 規(guī)則3: 特殊符號后保留 
  14.   * 如: 郵箱    1~@ 表示只保留第一位和@之后的字段 
  15.   *        afterturn@wupaas.com -> a********@wupaas.com 
  16.   * 復(fù)雜版本請使用接口 
  17.   * {@link cn.afterturn.easypoi.handler.inter.IExcelDataHandler} 
  18.   */ 
  19.  public String   desensitizationRule() default ""

 可以根據(jù)注釋看到,3個簡單規(guī)則的使用方法,還是比較清晰的,主要是:

  • 用下劃線分隔的保留頭尾的第一種格式
  • 該格式首和尾都可以是0,表示不保留
  • 用逗號分隔的隱藏部分?jǐn)?shù)據(jù)的第二種格式
  • 保留規(guī)則以對稱為主
  • 用~號來區(qū)分的,保留特殊字符后的格式的
  • 如果存在多個特殊字符,只保留最后一位的數(shù)據(jù)

具體實(shí)現(xiàn)代碼如下:

  1. /** 
  2.      * 特定字符分隔,添加星號 
  3.      * @param start 
  4.      * @param mark 
  5.      * @param value 
  6.      * @return 
  7.      */ 
  8.     private static String markSpilt(int start, String mark, String value) { 
  9.         if (value == null) { 
  10.             return null
  11.         } 
  12.         int end = value.lastIndexOf(mark); 
  13.         if (end <= start) { 
  14.             return value; 
  15.         } 
  16.         return StringUtils.left(value, start).concat(StringUtils.leftPad(StringUtils.right(value, value.length() - end), value.length() - start, "*")); 
  17.     } 
  18.  
  19.     /** 
  20.      * 部分?jǐn)?shù)據(jù)截取,優(yōu)先對稱截取 
  21.      * @param start 
  22.      * @param end 
  23.      * @param value 
  24.      * @return 
  25.      */ 
  26.     private static String subMaxString(int start, int end, String value) { 
  27.         if (value == null) { 
  28.             return null
  29.         } 
  30.         if (start > end) { 
  31.             throw new IllegalArgumentException("start must less end"); 
  32.         } 
  33.         int len = value.length(); 
  34.         if (len <= start) { 
  35.             return StringUtils.leftPad("", len, "*"); 
  36.         } else if (len > start && len <= end) { 
  37.             if (len == 1) { 
  38.                 return value; 
  39.             } 
  40.             if (len == 2) { 
  41.                 return StringUtils.left(value, 1).concat("*"); 
  42.             } 
  43.             return StringUtils.left(value, 1).concat(StringUtils.leftPad(StringUtils.right(value, 1), StringUtils.length(value) - 1, "*")); 
  44.         } else { 
  45.             start = (int) Math.ceil((len - end + 0.0D) / 2); 
  46.             end = len - start - end
  47.             end = end == 0 ? 1 : end
  48.             return StringUtils.left(value, start).concat(StringUtils.leftPad(StringUtils.right(value, end), len - start, "*")); 
  49.         } 
  50.     } 
  51.  
  52.     /** 
  53.      * 收尾截取數(shù)據(jù) 
  54.      * @param start 
  55.      * @param end 
  56.      * @param value 
  57.      * @return 
  58.      */ 
  59.     private static String subStartEndString(int start, int end, String value) { 
  60.         if (value == null) { 
  61.             return null
  62.         } 
  63.         if (value.length() <= start + end) { 
  64.             return value; 
  65.         } 
  66.         return StringUtils.left(value, start).concat(StringUtils.leftPad(StringUtils.right(value, end), StringUtils.length(value) - start, "*")); 
  67.     } 

 注解demo

使用起來也比較簡單,通過簡單的注解配置,就可以實(shí)現(xiàn)

  1.    @Excel(name = "姓名", desensitizationRule = "1,6"
  2.     private String name
  3.     @Excel(name = "身份證", desensitizationRule = "6_4"
  4.     private String card; 
  5.     @Excel(name = "手機(jī)號", desensitizationRule = "3_4"
  6.     private String phone; 
  7.     @Excel(name = "郵箱", desensitizationRule = "3~@"
  8.     private String email; 
  9.  
  10. // ---------------下面是生成excel的代碼------- 
  11. // 都是測試數(shù)據(jù),就簡單生成了部分 
  12.  List<DesensitizationEntity> list = new ArrayList<>(); 
  13.         for (int i = 0; i < 20; i++) { 
  14.             DesensitizationEntity entity = new DesensitizationEntity(); 
  15.             entity.setCard("37010119900101123" + i % 10); 
  16.             entity.setName("張三"); 
  17.             entity.setPhone("1311234567" + i % 10); 
  18.             entity.setEmail(i % 10 + "ttttt@afterturn.com"); 
  19.             list.add(entity); 
  20.         } 
  21.         Date         start    = new Date(); 
  22.         ExportParams params   = new ExportParams("脫敏測試""脫敏測試", ExcelType.XSSF); 
  23.         Workbook     workbook = ExcelExportUtil.exportExcel(params, DesensitizationEntity.class, list); 
  24.         System.out.println(new Date().getTime() - start.getTime()); 
  25.         File savefile = new File("D:/home/excel/"); 
  26.         if (!savefile.exists()) { 
  27.             savefile.mkdirs(); 
  28.         } 
  29.         FileOutputStream fos = new FileOutputStream("D:/home/excel/ExcelDesensitizationTest.xlsx"); 
  30.         workbook.write(fos); 
  31.         fos.close(); 

 生成的效果如下,可以看到幾個場景都有所覆蓋,基本上常用的字段也就

PS: 因?yàn)樽兎N注解和注解可以通用,所以大家在使用變種注解的時候也可以使用這種方式來脫敏數(shù)據(jù)。

這里就不舉例子了,只需要new ExcelExportEntity的之后調(diào)用setDesensitizationRule(rule),把對應(yīng)的規(guī)則設(shè)置就好,規(guī)則和上面保持一致。

2. 模板

模板脫敏

目前從群里反應(yīng)和問題數(shù)量看,模板已經(jīng)是最常用的方式了,雖然我一致推薦注解,但明顯模板比注解簡單的,對代碼的侵入一些,我自己寫的特殊標(biāo)簽,也日益豐富了。

脫敏的標(biāo)簽取自:desensitizationRule 的兩個單詞的頭兩個字符 deru,用來表示這個數(shù)據(jù)需要脫敏。使用方法也比較簡單deru:1_3,即deru:后面跟具體的規(guī)則,規(guī)則使用方式和上面介紹的 保持一致,這里就不重復(fù)贅述了,下面給大家看下例子:

  1. /** 
  2. *  這個包含兩個規(guī)則 
  3. * 1. deru: 代表這個數(shù)據(jù)需要脫敏 
  4. * 2. dict: 代表這個需要調(diào)用字典接口轉(zhuǎn)移 
  5. **/ 
  6. deru:1_1;dict:mtype;t.supMaterialList.mtype 

 脫敏在標(biāo)簽處理級別中屬于最低級,所有標(biāo)簽處理后,才會處理這個標(biāo)簽,和他的書寫順序無關(guān),比如上面的例子他寫著第一個,也是先處理了字典之后才處理標(biāo)簽。

核心代碼如下:

  1. /** 
  2.      * 根據(jù)模板解析函數(shù)獲取值 
  3.      * @param funStr 
  4.      * @param map 
  5.      * @return 
  6.      */ 
  7.     private Object getValByHandler(String funStr,Map<String, Object> map, Cell cell) throws Exception { 
  8.         // step 2. 判斷是否含有解析函數(shù) 
  9.         if (isHasSymbol(funStr, NUMBER_SYMBOL)) { 
  10.             funStr = funStr.replaceFirst(NUMBER_SYMBOL, ""); 
  11.         } 
  12.         boolean isStyleBySelf = false
  13.         if (isHasSymbol(funStr, STYLE_SELF)) { 
  14.             isStyleBySelf = true
  15.             funStr = funStr.replaceFirst(STYLE_SELF, ""); 
  16.         } 
  17.         boolean isDict = false
  18.         String  dict   = null
  19.         if (isHasSymbol(funStr, DICT_HANDLER)) { 
  20.             isDict = true
  21.             dict = funStr.substring(funStr.indexOf(DICT_HANDLER) + 5).split(";")[0]; 
  22.             funStr = funStr.replaceFirst(DICT_HANDLER, ""); 
  23.             funStr = funStr.replaceFirst(dict + ";"""); 
  24.         } 
  25.         boolean isI18n = false
  26.         if (isHasSymbol(funStr, I18N_HANDLER)) { 
  27.             isI18n = true
  28.             funStr = funStr.replaceFirst(I18N_HANDLER, ""); 
  29.         } 
  30.        //這里判斷是否包含注解規(guī)則,如果有注解規(guī)則就把注解規(guī)則挑出來,然后刪除掉規(guī)則 
  31.         boolean isDern = false
  32.         String  dern   = null
  33.         if (isHasSymbol(funStr, DESENSITIZATION_RULE)) { 
  34.             isDern = true
  35.             dern = funStr.substring(funStr.indexOf(DESENSITIZATION_RULE) + 5).split(";")[0]; 
  36.             funStr = funStr.replaceFirst(DESENSITIZATION_RULE, ""); 
  37.             funStr = funStr.replaceFirst(dern + ";"""); 
  38.         } 
  39.         if (isHasSymbol(funStr, MERGE)) { 
  40.             String mergeStr = PoiPublicUtil.getElStr(funStr,MERGE); 
  41.             funStr = funStr.replace(mergeStr, ""); 
  42.             mergeStr = mergeStr.replaceFirst(MERGE, ""); 
  43.             try { 
  44.                 int colSpan = (int)Double.parseDouble(PoiPublicUtil.getRealValue(mergeStr, map).toString()); 
  45.                 PoiMergeCellUtil.addMergedRegion(cell.getSheet(), cell.getRowIndex(), 
  46.                         cell.getRowIndex() , cell.getColumnIndex(), cell.getColumnIndex() + colSpan - 1); 
  47.             } catch (Exception e) { 
  48.                 LOGGER.error(e.getMessage(),e); 
  49.             } 
  50.         } 
  51.         Object obj = funStr.indexOf(START_STR) == -1 ? eval(funStr, map) : PoiPublicUtil.getRealValue(funStr, map); 
  52.         if (isDict) { 
  53.             obj = dictHandler.toName(dict, null, funStr, obj); 
  54.         } 
  55.         if (isI18n) { 
  56.             obj = i18nHandler.getLocaleName(obj.toString()); 
  57.         } 
  58.       // 這里就是調(diào)用脫敏規(guī)則,和注解是一個工具類,所以規(guī)則一致 
  59.         if (isDern) { 
  60.             obj = PoiDataDesensitizationUtil.desensitization(dern,obj); 
  61.         } 
  62.         return obj; 
  63.     } 

 給大家看下模板跑出來的效果:

最后結(jié)果

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2021-11-04 10:45:46

SpringBootExcelJava

2025-05-19 01:00:00

2012-02-22 09:44:21

Java

2025-05-12 00:00:00

2023-02-03 08:21:30

excelMySQL

2023-02-25 10:04:21

JavaExcel導(dǎo)出功能

2025-02-14 09:30:42

2022-12-28 08:17:36

數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出

2010-06-22 14:58:50

JDOMJavaXML

2018-01-26 07:53:46

數(shù)據(jù)脫敏數(shù)據(jù)安全信息安全

2010-07-21 14:17:36

SQL Server數(shù)

2011-04-14 09:05:07

ExcelMySQL數(shù)據(jù)

2025-05-06 01:00:00

Excel高性能內(nèi)存

2017-02-05 17:27:43

2021-03-26 07:09:15

Java技術(shù)pdfExcel

2025-02-12 07:27:52

MySQL8分頁查詢excel

2020-12-02 11:56:16

Java注解Excel

2025-03-10 00:13:00

數(shù)據(jù)庫脫敏日志脫敏出脫敏

2022-05-16 08:50:23

數(shù)據(jù)脫加密器

2021-10-22 06:53:45

脫敏處理數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

五月天综合网| 国产精品扒开腿做| 精品无码人妻少妇久久久久久| 青草在线视频| youjizz久久| 国产精品黄色av| 精品国产精品国产精品| 欧美aaaaaaaa牛牛影院| 欧美性生交片4| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 国产一区二区在线视频你懂的| 高跟丝袜欧美一区| 中文字幕一区二区三区乱码| 欧美自拍偷拍第一页| 日韩精品成人一区二区三区| 久久国产精品偷| 9.1成人看片免费版| 成人国产精品久久| 欧美丝袜一区二区| 亚洲五码在线观看视频| 国产视频网址在线| 国产成人综合亚洲网站| 国产精品久久久久久久午夜| 欧美成欧美va| 成人羞羞在线观看网站| 亚洲国产欧美一区二区三区久久| 我看黄色一级片| 98色花堂精品视频在线观看| 综合色中文字幕| 日本一区免费在线观看| 欧美一区二区在线观看视频| 激情国产一区二区 | 久久久精品视频免费| 日韩av片子| 亚洲欧洲一区二区三区久久| 亚洲无人区码一码二码三码| vam成人资源在线观看| 色先锋资源久久综合| 欧美视频在线观看视频| 最新黄网在线观看| 一色桃子久久精品亚洲| 先锋影音欧美| 国产中文字幕在线视频| 北条麻妃一区二区三区| 91久色国产| 国产毛片毛片毛片毛片| 美女精品一区二区| 国产精品人成电影在线观看| 日本熟妇一区二区三区| 国产偷自视频区视频一区二区| 欧美激情影音先锋| 九九九免费视频| 欧美久久综合| 欧美激情久久久久久| 国产成人久久久久| 亚洲网色网站| 久久福利视频导航| 久久国产美女视频| 亚洲国产精品久久久天堂| 精品国产一区二区在线| 一级特黄曰皮片视频| av中文字幕一区二区| 亚洲色图国产精品| 欧美成人国产精品一区二区| 欧美日本成人| 在线看欧美日韩| 欧美午夜激情影院| 欧美mv日韩| 久久资源免费视频| 麻豆视频在线观看| 99成人在线| 欧美最猛性xxxxx免费| 香蕉影院在线观看| 男女性色大片免费观看一区二区| 国产精品自在线| 国产精品嫩草影院桃色| 国产盗摄精品一区二区三区在线 | 网站一区二区三区| 欧美黄色网络| 日韩免费一区二区| 中文字幕乱码在线| 国产亚洲欧美日韩在线观看一区二区 | 午夜精品一区二区三区国产| 欧美裸体男粗大视频在线观看| 国产精品成人免费一区二区视频| 国产欧美一级| 国产日韩精品在线| 黄色aaa毛片| 久久综合久久综合亚洲| 亚洲日本一区二区三区在线不卡| 黄网站视频在线观看| 亚洲一区二区精品视频| 国产91对白刺激露脸在线观看| 岛国一区二区| 欧美精品一区二区三区一线天视频 | 2019年精品视频自拍| 制服丝袜亚洲播放| 欧美一级片黄色| 欧美久久精品一级c片| 九九九久久久久久| www.国产毛片| 国产另类ts人妖一区二区| 久久亚洲午夜电影| 国产美女在线观看| 欧美色播在线播放| 精品亚洲视频在线| 亚洲毛片免费看| 久久伊人精品视频| 亚洲精品成人在线视频| 国产精品一区二区无线| 日本一区二区精品视频| 欧美另类tv| 欧美日韩成人高清| 国产精品久久不卡| 在线免费观看日本欧美爱情大片| 国产91精品久久久久| 国产一区二区麻豆| 久久久噜噜噜久久中文字幕色伊伊| 男女爱爱视频网站| 666av成人影院在线观看| 精品久久久久一区| 永久av免费网站| 久久久亚洲人| 国产伦理久久久| caoporn免费在线| 在线视频中文字幕一区二区| av黄色一级片| 欧美激情五月| 成人在线视频网站| 韩国三级在线观看久| 午夜电影网亚洲视频| 精品人妻一区二区乱码| 日韩欧美国产精品综合嫩v| 欧美在线亚洲一区| 色呦呦中文字幕| 亚洲综合清纯丝袜自拍| 亚洲av无日韩毛片久久| 欧美视频免费| 国产精品久久久久久久久久免费 | 男人日女人的bb| 四虎视频在线精品免费网址| 亚洲一区二区国产| 国产精品久免费的黄网站| 成人网在线播放| 成人黄色片免费| 久久爱www.| 久久久精品国产亚洲| 亚洲一区二区影视| 国产精品天天摸av网| 国产三级国产精品国产专区50| 亚洲肉体裸体xxxx137| 51ⅴ精品国产91久久久久久| 无码精品人妻一区二区三区影院| 亚洲第一狼人社区| 丰满岳乱妇一区二区| 在线看片成人| 国产精品一区二区三区免费观看| 欧美xxx黑人xxx水蜜桃| 日韩一区二区在线观看| 欧美黄色免费在线观看| 国产99久久久久| 黄色一级片在线看| 欧美一级一片| 热re91久久精品国99热蜜臀| 男女污污视频在线观看| 欧美在线高清视频| 国产一区二区三区视频播放| 精品中文av资源站在线观看| 欧美日韩在线免费观看视频| 精品一区二区三区中文字幕| 久久99久久99精品免观看粉嫩| 国产91久久久| 欧美日韩一二三四五区| www.av天天| 久久99久久99小草精品免视看| 91免费视频黄| 国产精品一区二区三区美女| 人妖精品videosex性欧美| 超碰在线国产| 欧美一级夜夜爽| 中国一级免费毛片| 欧美经典一区二区三区| 日本精品一区在线| 99亚洲一区二区| 午夜欧美性电影| 亚洲va欧美va人人爽成人影院| 91国产视频在线| 91最新在线| 欧美成人一区二区三区| 国产免费一区二区三区四区五区| 国产精品久久久久久亚洲伦| 久久久久久久久久影视| 欧美专区在线| 大桥未久一区二区三区| 欧美日韩一本| 成人日韩在线电影| 一个人www视频在线免费观看| 丝袜美腿精品国产二区| 丰满肉肉bbwwbbww| 欧美亚洲一区二区在线观看| 久久久精品视频在线| 国产视频一区二区三区在线观看| 波多野结衣网页| 久久久久国产精品一区三寸| 国产av第一区| 国产剧情一区| 国产高清精品一区二区| 草民电影神马电影一区二区| 欧美精品www| 欧美性猛交xxx乱大交3蜜桃| 精品视频偷偷看在线观看| 国产免费福利视频| 色系网站成人免费| 日韩免费视频网站| 中文字幕亚洲一区二区va在线| 国产精品第七页| 国产高清不卡二三区| 欧美女同在线观看| 亚洲综合日韩| 久操手机在线视频| 99成人在线视频| 色吧亚洲视频| 性欧美lx╳lx╳| 国产美女精品在线观看| 国产一区二区在线观| 国产精品免费网站| 国产精品迅雷| 97视频免费观看| 国内在线视频| 不卡中文字幕av| 三级外国片在线观看视频| 亚洲视频电影图片偷拍一区| 色哟哟中文字幕| 精品国产一区二区在线观看| 国产免费不卡av| 7777精品伊人久久久大香线蕉的| 国产精品久久久久久久久夜色| 精品久久香蕉国产线看观看亚洲 | 操你啦视频在线| 日韩最新免费不卡| 国产美女视频一区二区三区| 亚洲美女在线看| 午夜影院在线视频| 亚洲国产精品久久久久久| www.好吊色| 日韩美女一区二区三区| 国产情侣av在线| 91精品国产日韩91久久久久久| 91丨九色丨蝌蚪丨对白| 欧美日韩精品综合在线| 亚洲一级视频在线观看| 欧美日韩一区二区三区不卡| 在线免费观看视频网站| 欧美性一区二区| 怡红院男人的天堂| 欧美猛男gaygay网站| 国产精品久久久久久久久毛片 | 99九九热只有国产精品| 亚洲一区二区在线看| 天天影视综合| 国产欧美123| 黄色工厂这里只有精品| 成人性生活视频免费看| 国产亚洲一区在线| 国产精品无码专区av在线播放| 免费在线成人| 浓精h攵女乱爱av| 狠狠色丁香九九婷婷综合五月| 三级黄色片免费看| 风间由美性色一区二区三区| 国产黑丝一区二区| 国产亚洲欧美日韩日本| 一二三四国产精品| 亚洲欧美日韩国产手机在线| 国产亚洲精品女人久久久久久| 午夜精品一区二区三区电影天堂 | 欧美一区二区三区视频免费播放| 国产成人精品白浆久久69| 精品国产乱子伦一区| 日韩午夜影院| 日韩中文在线不卡| 欧美大片黄色| 国产精品久久久久999| 狂野欧美xxxx韩国少妇| 国产综合精品一区二区三区| 国产欧美久久一区二区三区| 久久天天东北熟女毛茸茸| 亚洲激情不卡| 另类小说第一页| 国产成人精品免费一区二区| 欧美多人猛交狂配| 亚洲色图视频网| 制服.丝袜.亚洲.中文.综合懂色| 欧美三级韩国三级日本三斤| 精品人妻av一区二区三区| 精品在线观看国产| av文字幕在线观看| 欧美专区日韩视频| 国产精品毛片aⅴ一区二区三区| 国产伦精品一区二区三区照片91| 日韩精品免费| 丁香花在线影院观看在线播放| 美女一区二区三区| 欲求不满的岳中文字幕| 国产精品久久久久久久蜜臀| 国产第一页在线播放| 欧美三区在线视频| 欧美在线精品一区二区三区| 日韩视频第一页| 春暖花开亚洲一区二区三区| 99porn视频在线| 日本电影一区二区| 国产午夜伦鲁鲁| 国内精品国产成人| 日韩毛片无码永久免费看| 亚洲已满18点击进入久久| 波多野结衣高清视频| 精品国产91久久久久久久妲己 | 国产精品污视频| 亚洲最新中文字幕| 蜜桃视频动漫在线播放| 91久久国产精品91久久性色| 精品国产一级毛片| 欧美国产激情视频| 高清在线成人网| 久久福利免费视频| 欧美三级乱人伦电影| 黄色小视频在线观看| 91黄色8090| 北条麻妃一区二区三区在线观看| 一区二区三区精品国产| 日韩综合一区二区| theav精尽人亡av| 午夜精品视频一区| 欧美熟妇乱码在线一区| 欧美精品一区二区免费| 91麻豆精品国产综合久久久| 亚洲不卡1区| 午夜在线a亚洲v天堂网2018| 蜜臀视频在线观看| 亚洲午夜激情av| 亚洲国产精品久久人人爱潘金莲 | 国模精品视频| 国产精品xxx在线观看www| 欧美一区综合| 韩国三级与黑人| 亚洲精品亚洲人成人网在线播放| ,一级淫片a看免费| 日韩中文字幕在线看| 色综合一区二区日本韩国亚洲| 先锋影音一区二区三区| 免费成人av资源网| 少妇高潮一区二区三区喷水| 制服丝袜激情欧洲亚洲| 国产美女在线观看| 91超碰rencao97精品| 欧美黄色aaaa| 污污免费在线观看| 欧美视频在线观看免费| 嫩草在线播放| 国产精品高精视频免费| 欧美日韩国产传媒| 永久免费的av网站| 亚洲精品一二三四区| 欧日韩在线视频| 韩国精品久久久999| 亚洲小说图片视频| 中文字幕av不卡在线| |精品福利一区二区三区| 国产黄色免费大片| 午夜精品美女自拍福到在线| 无码日韩精品一区二区免费| 88av.com| 亚洲天堂免费看| 懂色av一区二区三区四区 | 成人精品国产亚洲| 国产四区在线观看| 成人性生交大片免费| 亚洲s码欧洲m码国产av| 伊人久久久久久久久久久久久 | 一本色道久久综合亚洲精品不| 黄色性生活一级片| 欧美日韩亚洲综合一区| 青草视频在线免费直播| 欧美高清一区二区| 久久国产成人午夜av影院| 久草成人在线视频| 亚洲视频专区在线| 高清一区二区三区av| 日韩a∨精品日韩在线观看| 国产拍欧美日韩视频二区| 国产aⅴ一区二区三区| 青青草一区二区| 伊人久久大香线| 加勒比一区二区| 欧美一二三区在线观看| 欧美xxx性| 亚洲人成无码网站久久99热国产| 国产亚洲综合性久久久影院| 国产强伦人妻毛片|