青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

介紹XXTEA加密算法

TEA算法是由劍橋大學計算機實驗室的David Wheeler和Roger Needham于1994年發明,TEA是Tiny Encryption Algorithm的縮寫,以加密解密速度快,實現簡單著稱。TEA算法每一次可以操作64bit(8byte),采用128bit(16byte)作為key,算法采用迭代的形式,推薦的迭代輪數是64輪,最少32輪。為解決TEA算法密鑰表攻擊的問題,TEA算法先后經歷了幾次改進,從XTEA到BLOCK TEA,直至最新的XXTEA。XTEA也稱做TEAN,它使用與TEA相同的簡單運算,但四個子密鑰采取不正規的方式進行混合以阻止密鑰表攻擊。Block TEA算法可以對32位的任意整數倍長度的變量塊進行加解密的操作,該算法將XTEA輪循函數依次應用于塊中的每個字,并且將它附加于被應用字的鄰字。XXTEA使用跟Block TEA相似的結構,但在處理塊中每個字時利用了相鄰字,且用擁有兩個輸入量的MX函數代替了XTEA輪循函數。本文所描述的安全機制采用的加密算法就是TEA算法中安全性能最佳的改進版本-XXTEA算法。

XXTEA算法的結構非常簡單,只需要執行加法、異或和寄存的硬件即可,且軟件實現的代碼非常短小,具有可移植性,非常適合嵌入式系統應用。由于XXTEA算法的以上優點,可以很好地應用于嵌入式RFID系統當中。

C語言實現:
#define MX (z>>5^y<<2) + (y>>3^z<<4)^(sum^y) + (k[p&3^e]^z);
 
 long btea(long* v, long n, long* k) {
   unsigned long z=v[n-1], y=v[0], sum=0, e, DELTA=0x9e3779b9;
   long p, q ;
   if (n > 1) {         
     q = 6 + 52/n;
     while (q-- > 0) {
       sum += DELTA;
       e = (sum >> 2) & 3;
       for (p=0; p<n-1; p++) y = v[p+1], z = v[p] += MX;
       y = v[0];
       z = v[n-1] += MX;
     }
     return 0 ;
   } else if (n < -1) { 
     n = -n;
     q = 6 + 52/n;
     sum = q*DELTA ;
     while (sum != 0) {
       e = (sum >> 2) & 3;
       for (p=n-1; p>0; p--) z = v[p-1], y = v[p] -= MX;
       z = v[n-1];
       y = v[0] -= MX;
       sum -= DELTA;
     }
     return 0;
   }
   return 1;
 }
   
Lua語言實現
---------------------------------------------------------------------
-- Author: Jørn Skaarud Karlsen
---------------------------------------------------------------------

require("bit")
require("hex")

---------------------------------------------------------------------
-- Constants
---------------------------------------------------------------------

delta = 0x9E3779B9

---------------------------------------------------------------------
-- Conversion
---------------------------------------------------------------------

function convertStringToBytes(str)
    local bytes = {}
    local strLength = string.len(str)
    for i=1,strLength do
        table.insert(bytes, string.byte(str, i))
    end

    return bytes
end

function convertBytesToString(bytes)
    local bytesLength = table.getn(bytes)
    local str = ""
    for i=1,bytesLength do
        str = str .. string.char(bytes[i])
    end

    return str
end

function convertHexStringToBytes(str)
    local bytes = {}
    local strLength = string.len(str)
    for k=2,strLength,2 do
        local hexString = "0x" .. string.sub(str, (k - 1), k)
        table.insert(bytes, hex.to_dec(hexString))
    end

    return bytes
end

function convertBytesToHexString(bytes)
    local str = ""
    local bytesLength = table.getn(bytes)
    for i=1,bytesLength do
        local hexString = string.sub(hex.to_hex(bytes[i]), 3)
        if string.len(hexString) == 1 then
            hexString = "0" .. hexString
        end
        str = str .. hexString
    end

    return str
end

function convertBytesToUIntArray(bytes, includeLength)
    local bytesLength = table.getn(bytes)
    local result = {}

    if includeLength then
        local n = bit.brshift(bytesLength, 2) + 1
        if bit.band(bytesLength, 3) ~= 0 then
            n = n + 1
        end

        result[n] = bytesLength;
    end

    for i=0,(bytesLength - 1) do
        local resultIndex = bit.brshift(i, 2) + 1
        if result[resultIndex] == nil then
            result[resultIndex] = 0
        end

        local resultValue = bit.blshift(bit.band(0x000000ff, bytes[i+1]), bit.blshift(bit.band(i, 3), 3))
        result[resultIndex] = bit.bor(result[resultIndex], resultValue);
    end

    return result
end

function convertUIntArrayToBytes(data, includeLength)
    local dataLength = table.getn(data)
    local n = bit.blshift(dataLength, 2)
    local result = {}

    if includeLength then
        local m = data[dataLength]
        if m > n then
            return nil
        end

        n = m
    end

    for i=0,(n-1) do
        local value = bit.band(bit.brshift(data[bit.brshift(i, 2) + 1], (bit.blshift(bit.band(i, 3), 3))), 0xff)
        table.insert(result, value)
    end

    return result
end

function convertToUInt32(value)
    if value < 0 then
        local absValue = math.abs(value)
        local a = math.floor(absValue / 0xFFFFFFFF)
        local b = value + a * 0xFFFFFFFF
        local c = 0xFFFFFFFF + b + 1
        return c
    end

    return math.mod(value, 0xFFFFFFFF) - math.floor(value / 0xFFFFFFFF)
end

---------------------------------------------------------------------
-- Encryption/decryption common
---------------------------------------------------------------------

function mx(sum, y, z, p, e, k)
    local aa = bit.brshift(z, 5)
    local ab = convertToUInt32(bit.blshift(y, 2))
    local ac = bit.bxor(aa, ab)

    local ba = bit.brshift(y, 3)
    local bb = convertToUInt32(bit.blshift(z, 4))
    local bc = bit.bxor(ba, bb)
    local ca = bit.bxor(sum, y)

    local dia = bit.band(p, 3)
    local dib = bit.bxor(dia, e)
    local da = k[dib + 1]
    local db = bit.bxor(da, z)

    local ea = convertToUInt32(ca + db)
    local fa = convertToUInt32(ac + bc)
    local ga = bit.bxor(fa, ea)

    return ga
end

---------------------------------------------------------------------
-- Decryption
---------------------------------------------------------------------

function decryptIntArray(v, k)
    local n = table.getn(v)
    local z = v[n]
    local y = v[1]
    local e = 0
    local p = 0

    local q = 6 + math.floor(52 / n)
    local sum = convertToUInt32(q * delta)
    while sum ~= 0 do
        e = bit.band(bit.brshift(sum, 2), 3)
        for p=n,2,-1 do
            z = v[p - 1]
            v[p] = convertToUInt32(v[p] - mx(sum, y, z, (p-1), e, k))
            y = v[p]
        end

        z = v[n]
        v[1] = convertToUInt32(v[1] - mx(sum, y, z, p, e, k))
        y = v[1]

        local sumBefore = sum
        sum = convertToUInt32(sum - delta)
    end

    return v
end

function decrypt(data, key)
    local dataLength = string.len(data)
    local keyLength = string.len(key)

    if keyLength == 0 then
        return data
    end

    local keyBytes = convertStringToBytes(key)
    local encryptedBytes = convertHexStringToBytes(data)

    local dataIntArray = convertBytesToUIntArray(encryptedBytes, false)
    local keyIntArray = convertBytesToUIntArray(keyBytes, false)

    local decryptedIntArray = decryptIntArray(dataIntArray, keyIntArray)
    local decryptedBytes = convertUIntArrayToBytes(decryptedIntArray, true)
    local decryptedString = convertBytesToString(decryptedBytes)

    return decryptedString
end

---------------------------------------------------------------------
-- Encryption
---------------------------------------------------------------------

function encryptIntArray(v, k)

    n = table.getn(v)
    if n < 2 then
        return v
    end

    local z = v[n]
    local y = v[1]
    local sum = 0
    local e = 0
    local p = 0
    local initQ = 6 + math.floor(52 / n)

    for q=initQ,1,-1 do
        sum = convertToUInt32(sum + delta);
        e = bit.band(bit.brshift(sum, 2), 3);
        for p=1,(n-1) do
            y = v[p + 1];
            v[p] = convertToUInt32(v[p] + mx(sum, y, z, (p-1), e, k));
            z = v[p]
        end
        y = v[1];
        v[n] = convertToUInt32(v[n] + mx(sum, y, z, (n-1), e, k));
        z = v[n]
    end

    return v;

end

function encrypt(data, key)
    local dataLength = string.len(data)
    local keyLength = string.len(key)

    if (keyLength == 0) then
        return data
    end

    local dataBytes = convertStringToBytes(data)
    local keyBytes = convertStringToBytes(key)

    local dataIntArray = convertBytesToUIntArray(dataBytes, true)
    local keyIntArray = convertBytesToUIntArray(keyBytes, false)

    local encryptedIntArray = encryptIntArray(dataIntArray, keyIntArray)
    local encryptedBytes = convertUIntArrayToBytes(encryptedIntArray, false)
    local encryptedString = convertBytesToHexString(encryptedBytes)

    return encryptedString
end

---------------------------------------------------------------------
-- Program: replace
---------------------------------------------------------------------

unencryptedInput = "This is a test"
encryptionKeyInput = "xxxxxxxxxxxxxxxxxxxx"   -- Place your encryption key here

encryptedOutput = encrypt(unencryptedInput, encryptionKeyInput)
print(encryptedOutput)

decryptedEncryptedOutput = decrypt(encryptedOutput, encryptionKeyInput)
print(decryptedEncryptedOutput)

AS3語言實現
/**********************************************************\
|                                                          |
| The implementation of PHPRPC Protocol 3.0                |
|                                                          |
| XXTEA.as                                                 |
|                                                          |
| Release 3.0.0                                            |
| Copyright (c) 2005-2007 by Team-PHPRPC                   |
|                                                          |
| WebSite:  http://www.phprpc.org/                         |
|           http://www.phprpc.net/                         |
|           http://www.phprpc.com/                         |
|           http://sourceforge.net/projects/php-rpc/       |
|                                                          |
| Authors:  Ma Bingyao <andot@ujn.edu.cn>                  |
|                                                          |
| This file may be distributed and/or modified under the   |
| terms of the GNU Lesser General Public License (LGPL)    |
| version 3.0 as published by the Free Software Foundation |
| and appearing in the included file LICENSE.              |
|                                                          |
\*********************************************************
*/
/* XXTEA encryption arithmetic library.
 *
 * Copyright (C) 2006-2007 Ma Bingyao <andot@ujn.edu.cn>
 * Version: 1.7
 * LastModified: Nov 5, 2007
 * This library is free.  You can redistribute it and/or modify it.
 
*/
 
package org.phprpc.util {
    import flash.utils.ByteArray;
    import flash.utils.Endian;
    public class XXTEA {
        private static const delta:uint = uint(0x9E3779B9);
        private static function LongArrayToByteArray(data:Array, includeLength:Boolean):ByteArray {
            var length:uint = data.length;
            var n:uint = (length - 1) << 2;
            if (includeLength) {
                var m:uint = data[length - 1];
                if ((m < n - 3) || (m > n)) {
                    return null;
                }
                n = m;
            }
            var result:ByteArray = new ByteArray();
            result.endian = Endian.LITTLE_ENDIAN;
            for (var i:uint = 0; i < length; i++) {
                result.writeUnsignedInt(data[i]);
            }
            if (includeLength) {
                result.length = n;
                return result;
            }
            else {
                return result;
            }
        }
        private static function ByteArrayToLongArray(data:ByteArray, includeLength:Boolean):Array {
            var length:uint = data.length;
            var n:uint = length >> 2;
            if (length % 4 > 0) {
                n++;
                data.length += (4 - (length % 4));
            }
            data.endian = Endian.LITTLE_ENDIAN;
            data.position = 0;
            var result:Array = [];
            for (var i:uint = 0; i < n; i++) {
                result[i] = data.readUnsignedInt();
            }
            if (includeLength) {
                result[n] = length;
            }
            data.length = length;
            return result;
        }
        public static function encrypt(data:ByteArray, key:ByteArray):ByteArray {
            if (data.length == 0) {
                return new ByteArray();
            }
            var v:Array = ByteArrayToLongArray(data, true);
            var k:Array = ByteArrayToLongArray(key, false);
            if (k.length < 4) {
                k.length = 4;
            }
            var n:uint = v.length - 1;
            var z:uint = v[n];
            var y:uint = v[0];
            var mx:uint;
            var e:uint;
            var p:uint;
            var q:uint = uint(6 + 52 / (n + 1));
            var sum:uint = 0;
            while (0 < q--) {
                sum = sum + delta;
                e = sum >>> 2 & 3;
                for (p = 0; p < n; p++) {
                    y = v[p + 1];
                    mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);
                    z = v[p] = v[p] + mx;
                }
                y = v[0];
                mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);
                z = v[n] = v[n] + mx;
            }
            return LongArrayToByteArray(v, false);
        }
        public static function decrypt(data:ByteArray, key:ByteArray):ByteArray {
            if (data.length == 0) {
                return new ByteArray();
            }
            var v:Array = ByteArrayToLongArray(data, false);
            var k:Array = ByteArrayToLongArray(key, false);
            if (k.length < 4) {
                k.length = 4;
            }
            var n:uint = v.length - 1;
            var z:uint = v[n - 1];
            var y:uint = v[0];
            var mx:uint;
            var e:uint;
            var p:uint;
            var q:uint = uint(6 + 52 / (n + 1));
            var sum:uint = q * delta;
            while (sum != 0) {
                e = sum >>> 2 & 3;
                for (p = n; p > 0; p--) {
                    z = v[p - 1];
                    mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);
                    y = v[p] = v[p] - mx;
                }
                z = v[n];
                mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);
                y = v[0] = v[0] - mx;
                sum = sum - delta;
            }
            return LongArrayToByteArray(v, true);
        }
    }
}


JS語言實現
/* XXTEA encryption arithmetic library.
*
* Copyright (C) 2006 Ma Bingyao <andot@ujn.edu.cn>
* Version:      1.5
* LastModified: Dec 9, 2006
* This library is free.  You can redistribute it and/or modify it.
*/
 
function long2str(v, w) {
    var vl = v.length;
    var n = (vl - 1) << 2;
    if (w) {
        var m = v[vl - 1];
        if ((m < n - 3) || (m > n)) return null;
        n = m;
    }
    for (var i = 0; i < vl; i++) {
        v[i] = String.fromCharCode(v[i] & 0xff,
                                   v[i] >>> 8 & 0xff,
                                   v[i] >>> 16 & 0xff,
                                   v[i] >>> 24 & 0xff);
    }
    if (w) {
        return v.join('').substring(0, n);
    }
    else {
        return v.join('');
    }
}
 
function str2long(s, w) {
    var len = s.length;
    var v = [];
    for (var i = 0; i < len; i += 4) {
        v[i >> 2] = s.charCodeAt(i)
                  | s.charCodeAt(i + 1) << 8
                  | s.charCodeAt(i + 2) << 16
                  | s.charCodeAt(i + 3) << 24;
    }
    if (w) {
        v[v.length] = len;
    }
    return v;
}
 
function xxtea_encrypt(str, key) {
    if (str == "") {
        return "";
    }
    var v = str2long(str, true);
    var k = str2long(key, false);
    if (k.length < 4) {
        k.length = 4;
    }
    var n = v.length - 1;
 
    var z = v[n], y = v[0], delta = 0x9E3779B9;
    var mx, e, p, q = Math.floor(6 + 52 / (n + 1)), sum = 0;
    while (0 < q--) {
        sum = sum + delta & 0xffffffff;
        e = sum >>> 2 & 3;
        for (p = 0; p < n; p++) {
            y = v[p + 1];
            mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);
            z = v[p] = v[p] + mx & 0xffffffff;
        }
        y = v[0];
        mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);
        z = v[n] = v[n] + mx & 0xffffffff;
    }
 
    return long2str(v, false);
}
 
function xxtea_decrypt(str, key) {
    if (str == "") {
        return "";
    }
    var v = str2long(str, false);
    var k = str2long(key, false);
    if (k.length < 4) {
        k.length = 4;
    }
    var n = v.length - 1;
 
    var z = v[n - 1], y = v[0], delta = 0x9E3779B9;
    var mx, e, p, q = Math.floor(6 + 52 / (n + 1)), sum = q * delta & 0xffffffff;
    while (sum != 0) {
        e = sum >>> 2 & 3;
        for (p = n; p > 0; p--) {
            z = v[p - 1];
            mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);
            y = v[p] = v[p] - mx & 0xffffffff;
        }
        z = v[n];
        mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);
        y = v[0] = v[0] - mx & 0xffffffff;
        sum = sum - delta & 0xffffffff;
    }
 
    return long2str(v, true);
}

PHP語言實現
<?php
/* XXTEA encryption arithmetic library.
*
* Copyright (C) 2006 Ma Bingyao <andot@ujn.edu.cn>
* Version:      1.5
* LastModified: Dec 5, 2006
* This library is free.  You can redistribute it and/or modify it.
*/
 
function long2str($v$w) {
    $len = count($v);
    $n = ($len - 1) << 2;
    if ($w) {
        $m = $v[$len - 1];
        if (($m < $n - 3) || ($m > $n)) return false;
        $n = $m;
    }
    $s = array();
    for ($i = 0; $i < $len$i++) {
        $s[$i] = pack("V", $v[$i]);
    }
    if ($w) {
        return substr(join('', $s), 0, $n);
    }
    else {
        return join('', $s);
    }
}
 
function str2long($s$w) {
    $v = unpack("V*", $sstr_repeat("\0", (4 - strlen($s) % 4) & 3));
    $v = array_values($v);
    if ($w) {
        $v[count($v)] = strlen($s);
    }
    return $v;
}
 
function int32($n) {
    while ($n >= 2147483648) $n -= 4294967296;
    while ($n <= -2147483649) $n += 4294967296;
    return (int)$n;
}
 
function xxtea_encrypt($str$key) {
    if ($str == "") {
        return "";
    }
    $v = str2long($strtrue);
    $k = str2long($keyfalse);
    if (count($k) < 4) {
        for ($i = count($k); $i < 4; $i++) {
            $k[$i] = 0;
        }
    }
    $n = count($v) - 1;
 
    $z = $v[$n];
    $y = $v[0];
    $delta = 0x9E3779B9;
    $q = floor(6 + 52 / ($n + 1));
    $sum = 0;
    while (0 < $q--) {
        $sum = int32($sum + $delta);
        $e = $sum >> 2 & 3;
        for ($p = 0; $p < $n$p++) {
            $y = $v[$p + 1];
            $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));
            $z = $v[$p] = int32($v[$p] + $mx);
        }
        $y = $v[0];
        $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));
        $z = $v[$n] = int32($v[$n] + $mx);
    }
    return long2str($vfalse);
}
 
function xxtea_decrypt($str$key) {
    if ($str == "") {
        return "";
    }
    $v = str2long($strfalse);
    $k = str2long($keyfalse);
    if (count($k) < 4) {
        for ($i = count($k); $i < 4; $i++) {
            $k[$i] = 0;
        }
    }
    $n = count($v) - 1;
 
    $z = $v[$n];
    $y = $v[0];
    $delta = 0x9E3779B9;
    $q = floor(6 + 52 / ($n + 1));
    $sum = int32($q * $delta);
    while ($sum != 0) {
        $e = $sum >> 2 & 3;
        for ($p = $n$p > 0; $p--) {
            $z = $v[$p - 1];
            $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));
            $y = $v[$p] = int32($v[$p] - $mx);
        }
        $z = $v[$n];
        $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));
        $y = $v[0] = int32($v[0] - $mx);
        $sum = int32($sum - $delta);
    }
    return long2str($vtrue);
}
?>


參考資料
wiki百科 https://en.wikipedia.org/wiki/XXTEA
幾乎所有語言的實現 https://github.com/xxtea/
AS3 & LUA語言實現 
https://forums.coronalabs.com/topic/4738-xxtea-encryption-in-lua/
JS & PHP語言實現 http://www.coolcode.org/?action=show&id=128

posted on 2016-04-11 22:32 楊粼波 閱讀(5125) 評論(1)  編輯 收藏 引用

評論

# re: 介紹XXTEA加密算法[未登錄] 2016-04-12 07:32 chipset

簡單實用  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费成人黄色片| 欧美在线网站| 国产欧美精品一区二区色综合| 蜜桃久久精品乱码一区二区| 久久婷婷国产综合尤物精品| 卡通动漫国产精品| 欧美承认网站| 国产精品白丝av嫩草影院| 国产精品欧美久久| 国产精品美女久久久久久久| 国产日韩精品视频一区| 伊人成人网在线看| 亚洲美女av在线播放| 亚洲视频第一页| 香蕉成人久久| 欧美激情精品久久久| 艳妇臀荡乳欲伦亚洲一区| 亚洲一区二区毛片| 久久综合婷婷| 国产精品九九久久久久久久| 国内外成人在线| 日韩视频不卡| 久久精品视频在线| 亚洲黄色在线| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲精一区二区三区| 亚洲欧美日韩一区在线| 美女国产精品| 国产精一区二区三区| 亚洲国产精品高清久久久| 亚洲一区久久久| 美女亚洲精品| 午夜精品久久久久| 欧美日韩国产黄| 在线观看一区欧美| 欧美一区二区三区播放老司机| 欧美激情第六页| 久久久精品日韩| 亚洲日本成人网| 亚洲中午字幕| 欧美日韩天堂| 亚洲精品视频在线播放| 久久香蕉精品| 亚洲欧美日韩视频二区| 欧美视频日韩视频| 亚洲免费观看高清完整版在线观看熊 | 黄色欧美成人| 亚洲综合清纯丝袜自拍| 亚洲人成毛片在线播放| 久久久久久穴| 国内揄拍国内精品少妇国语| 欧美伊人久久久久久久久影院 | 欧美一区二区三区成人| 国产精品视频专区| 亚洲午夜视频在线| 亚洲免费电影在线观看| 欧美激情视频一区二区三区免费 | 亚洲欧美日韩另类| 欧美日韩视频在线观看一区二区三区| 在线观看日韩www视频免费| 久久精品欧洲| 欧美一级大片在线观看| 国产麻豆成人精品| 欧美综合国产精品久久丁香| 亚洲免费婷婷| 国产日韩精品一区二区浪潮av| 欧美一级淫片aaaaaaa视频| 亚洲专区国产精品| 国产精品一区二区久激情瑜伽| 性高湖久久久久久久久| 午夜精品福利电影| 在线观看精品一区| 亚洲成色www8888| 欧美成年人视频| 在线一区亚洲| 亚洲天堂av综合网| 国产日韩欧美成人| 久久综合国产精品| 你懂的亚洲视频| 亚洲视频高清| 久久av资源网| 亚洲最黄网站| 午夜精品久久久久久久99樱桃 | 久久精品网址| 久久精品女人| 99热免费精品| 国产精品99久久久久久久女警| 国产精品女主播在线观看| 久久久青草青青国产亚洲免观| 麻豆精品传媒视频| 亚洲天堂男人| 欧美一区二区网站| 亚洲国产欧美一区| 亚洲精品日韩在线| 国产欧美日韩另类视频免费观看| 久久色中文字幕| 欧美日本在线一区| 久久精品国产清自在天天线 | 国产在线欧美| 亚洲日本一区二区三区| 国产精品嫩草影院av蜜臀| 久久久久久久精| 欧美日韩国产123| 久久中文字幕一区| 欧美理论大片| 久久香蕉国产线看观看网| 欧美日韩精品久久久| 久久视频在线看| 欧美视频网址| 欧美大片免费观看| 国产精品日韩一区二区三区| 欧美二区在线播放| 国产日韩av高清| 一区二区三区四区五区在线| 亚洲国产精品一区二区久| 亚洲综合欧美| 亚洲免费观看在线视频| 久久狠狠久久综合桃花| 亚洲欧美日韩国产综合在线| 欧美成人一品| 猛干欧美女孩| 韩日欧美一区二区三区| 亚洲自拍偷拍一区| 亚洲天堂成人在线观看| 欧美高清视频在线播放| 蜜臀99久久精品久久久久久软件| 国产精品亚洲综合一区在线观看| 亚洲精品在线一区二区| 亚洲三级毛片| 欧美91大片| 欧美成人一区二区三区片免费| 国产亚洲欧洲| 性伦欧美刺激片在线观看| 亚洲欧美在线播放| 欧美性事免费在线观看| 99re热精品| 亚洲欧美日韩一区在线观看| 亚洲综合色激情五月| 狼狼综合久久久久综合网| 久久综合九九| 黄色成人在线观看| 久久精品国产精品| 老巨人导航500精品| 激情久久五月天| 久久免费99精品久久久久久| 久久影院午夜片一区| 伊人伊人伊人久久| 美女脱光内衣内裤视频久久网站| 免费欧美视频| 久久午夜羞羞影院免费观看| 欧美成人精品一区二区三区| 亚洲高清影视| 欧美激情欧美激情在线五月| 亚洲欧洲精品一区二区| 一区二区三区国产精华| 国产精品天天看| 欧美资源在线观看| 女人香蕉久久**毛片精品| 亚洲欧洲在线播放| 欧美日韩蜜桃| 欧美亚洲视频| 亚洲国产精品va在线看黑人动漫| 日韩亚洲一区在线播放| 国产精品青草综合久久久久99| 欧美亚洲一区二区在线| 欧美大色视频| 欧美亚洲一区二区在线观看| 一色屋精品视频在线观看网站| 欧美精品在线观看播放| 亚洲欧美另类中文字幕| 免费欧美日韩| 亚洲欧美日韩综合一区| 亚洲成色777777在线观看影院| 欧美日韩国产麻豆| 久久成人亚洲| 亚洲国产欧美日韩| 亚洲免费婷婷| 亚洲人妖在线| 国产日本精品| 欧美女人交a| 先锋资源久久| 亚洲毛片av| 暖暖成人免费视频| 亚洲欧美中文字幕| 亚洲美女视频网| 国内精品久久久久伊人av| 欧美日韩精品一区二区在线播放 | 日韩午夜电影av| 国产一区二区欧美日韩| 欧美日韩中文字幕日韩欧美| 久久综合久久综合久久| 久久av一区二区三区| 亚洲夜晚福利在线观看| 亚洲黄色一区二区三区| 另类综合日韩欧美亚洲| 欧美一级黄色网| 午夜精品美女自拍福到在线 | 亚洲天堂av在线免费| 亚洲破处大片| 亚洲国产精品成人综合色在线婷婷|