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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

国密SM2非对称加密算法(对本地文件的加解密)代码展示

發布時間:2023/12/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 国密SM2非对称加密算法(对本地文件的加解密)代码展示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼

package com.example.demo.MIMAXUE.SM;import java.io.*; import java.math.BigInteger; import java.security.SecureRandom; import java.util.Arrays;import org.apache.commons.io.FileUtils; import org.bouncycastle.crypto.params.ECDomainParameters; import org.bouncycastle.math.ec.ECCurve; import org.bouncycastle.math.ec.ECPoint;/*** SM2公鑰加密算法實現 包括 -簽名,驗簽 -密鑰交換 -公鑰加密,私鑰解密** @author Potato**/ public class SM2 {private static BigInteger n = new BigInteger("FFFFFFFE" + "FFFFFFFF" + "FFFFFFFF" + "FFFFFFFF" + "7203DF6B" + "21C6052B" + "53BBF409" + "39D54123", 16);private static BigInteger p = new BigInteger("FFFFFFFE" + "FFFFFFFF" + "FFFFFFFF" + "FFFFFFFF" + "FFFFFFFF" + "00000000" + "FFFFFFFF" + "FFFFFFFF", 16);private static BigInteger a = new BigInteger("FFFFFFFE" + "FFFFFFFF" + "FFFFFFFF" + "FFFFFFFF" + "FFFFFFFF" + "00000000" + "FFFFFFFF" + "FFFFFFFC", 16);private static BigInteger b = new BigInteger("28E9FA9E" + "9D9F5E34" + "4D5A9E4B" + "CF6509A7" + "F39789F5" + "15AB8F92" + "DDBCBD41" + "4D940E93", 16);private static BigInteger gx = new BigInteger("32C4AE2C" + "1F198119" + "5F990446" + "6A39C994" + "8FE30BBF" + "F2660BE1" + "715A4589" + "334C74C7", 16);private static BigInteger gy = new BigInteger("BC3736A2" + "F4F6779C" + "59BDCEE3" + "6B692153" + "D0A9877C" + "C62A4740" + "02DF32E5" + "2139F0A0", 16);private static ECDomainParameters ecc_bc_spec;private static int w = (int) Math.ceil(n.bitLength() * 1.0 / 2) - 1;private static BigInteger _2w = new BigInteger("2").pow(w);private static final int DIGEST_LENGTH = 32;private static SecureRandom random = new SecureRandom();private static ECCurve.Fp curve;private static ECPoint G;private boolean debug = false;public boolean isDebug() {return debug;}public void setDebug(boolean debug) {this.debug = debug;}/*** 以16進制打印字節數組** @param b*/public static void printHexString(byte[] b) {for (int i = 0; i < b.length; i++) {String hex = Integer.toHexString(b[i] & 0xFF);if (hex.length() == 1) {hex = '0' + hex;}System.out.print(hex.toUpperCase());}System.out.println();}/*** 隨機數生成器** @param max* @return*/private static BigInteger random(BigInteger max) {BigInteger r = new BigInteger(256, random);// int count = 1;while (r.compareTo(max) >= 0) {r = new BigInteger(128, random);// count++;}// System.out.println("count: " + count);return r;}/*** 判斷字節數組是否全0** @param buffer* @return*/private boolean allZero(byte[] buffer) {for (int i = 0; i < buffer.length; i++) {if (buffer[i] != 0)return false;}return true;}public byte[] encryptFile(ECPoint publicKey) throws IOException {StringBuffer fileData = new StringBuffer();//"G:\\jjDown\\shengyue.mp4"BufferedReader reader = new BufferedReader(new FileReader("G:\\jjDown\\350.mp4"));char[] buf = new char[1024];int numRead=0;while((numRead=reader.read(buf)) != -1){String readData = String.valueOf(buf, 0, numRead);fileData.append(readData);}//緩沖區使用完必須關掉reader.close();//return fileData.toString();// File file = new File("C:\\Users\\12236\\Desktop\\tangtang.txt"); // try { // String content = FileUtils.readFileToString(file); // System.out.println("Contents of file: " + content); // } catch (IOException e) { // e.printStackTrace(); // }byte[] result = encrypt(fileData.toString(), publicKey);return result;}public byte[] encryptFile2(ECPoint publicKey) throws IOException {StringBuffer fileData = new StringBuffer();//"G:\\jjDown\\shengyue.mp4"BufferedReader reader = new BufferedReader(new FileReader("G:\\jjDown\\0989.mp4"));char[] buf = new char[1024];int numRead=0;while((numRead=reader.read(buf)) != -1){String readData = String.valueOf(buf, 0, numRead);fileData.append(readData);}//緩沖區使用完必須關掉reader.close();//return fileData.toString();// File file = new File("C:\\Users\\12236\\Desktop\\tangtang.txt"); // try { // String content = FileUtils.readFileToString(file); // System.out.println("Contents of file: " + content); // } catch (IOException e) { // e.printStackTrace(); // }byte[] result = encrypt(fileData.toString(), publicKey);return result;}/*** 公鑰加密** @param input* 加密原文* @param publicKey* 公鑰* @return*/public byte[] encrypt(String input, ECPoint publicKey) {byte[] inputBuffer = input.getBytes();if (debug)printHexString(inputBuffer);byte[] C1Buffer;ECPoint kpb;byte[] t;do {/* 1 產生隨機數k,k屬于[1, n-1] */BigInteger k = random(n);if (debug) {System.out.print("k: ");printHexString(k.toByteArray());}/* 2 計算橢圓曲線點C1 = [k]G = (x1, y1) */ECPoint C1 = G.multiply(k);C1Buffer = C1.getEncoded(false);if (debug) {System.out.print("C1: ");printHexString(C1Buffer);}/** 3 計算橢圓曲線點 S = [h]Pb*/BigInteger h = ecc_bc_spec.getH();if (h != null) {ECPoint S = publicKey.multiply(h);if (S.isInfinity())throw new IllegalStateException();}/* 4 計算 [k]PB = (x2, y2) */kpb = publicKey.multiply(k).normalize();/* 5 計算 t = KDF(x2||y2, klen) */byte[] kpbBytes = kpb.getEncoded(false);t = KDF(kpbBytes, inputBuffer.length);// DerivationFunction kdf = new KDF1BytesGenerator(new// ShortenedDigest(new SHA256Digest(), DIGEST_LENGTH));//// t = new byte[inputBuffer.length];// kdf.init(new ISO18033KDFParameters(kpbBytes));// kdf.generateBytes(t, 0, t.length);} while (allZero(t));/* 6 計算C2=M^t */byte[] C2 = new byte[inputBuffer.length];for (int i = 0; i < inputBuffer.length; i++) {C2[i] = (byte) (inputBuffer[i] ^ t[i]);}/* 7 計算C3 = Hash(x2 || M || y2) */byte[] C3 = sm3hash(kpb.getXCoord().toBigInteger().toByteArray(), inputBuffer,kpb.getYCoord().toBigInteger().toByteArray());/* 8 輸出密文 C=C1 || C2 || C3 */byte[] encryptResult = new byte[C1Buffer.length + C2.length + C3.length];System.arraycopy(C1Buffer, 0, encryptResult, 0, C1Buffer.length);System.arraycopy(C2, 0, encryptResult, C1Buffer.length, C2.length);System.arraycopy(C3, 0, encryptResult, C1Buffer.length + C2.length, C3.length);if (debug) {System.out.print("密文: ");printHexString(encryptResult);}return encryptResult;}/*** 私鑰解密** @param encryptData* 密文數據字節數組* @param privateKey* 解密私鑰* @return*/public String decrypt(byte[] encryptData, BigInteger privateKey) {if (debug)System.out.println("encryptData length: " + encryptData.length);byte[] C1Byte = new byte[65];System.arraycopy(encryptData, 0, C1Byte, 0, C1Byte.length);ECPoint C1 = curve.decodePoint(C1Byte).normalize();/** 計算橢圓曲線點 S = [h]C1 是否為無窮點*/BigInteger h = ecc_bc_spec.getH();if (h != null) {ECPoint S = C1.multiply(h);if (S.isInfinity())throw new IllegalStateException();}/* 計算[dB]C1 = (x2, y2) */ECPoint dBC1 = C1.multiply(privateKey).normalize();/* 計算t = KDF(x2 || y2, klen) */byte[] dBC1Bytes = dBC1.getEncoded(false);int klen = encryptData.length - 65 - DIGEST_LENGTH;byte[] t = KDF(dBC1Bytes, klen);// DerivationFunction kdf = new KDF1BytesGenerator(new// ShortenedDigest(new SHA256Digest(), DIGEST_LENGTH));// if (debug)// System.out.println("klen = " + klen);// kdf.init(new ISO18033KDFParameters(dBC1Bytes));// kdf.generateBytes(t, 0, t.length);if (allZero(t)) {System.err.println("all zero");throw new IllegalStateException();}/* 5 計算M'=C2^t */byte[] M = new byte[klen];for (int i = 0; i < M.length; i++) {M[i] = (byte) (encryptData[C1Byte.length + i] ^ t[i]);}if (debug)printHexString(M);/* 6 計算 u = Hash(x2 || M' || y2) 判斷 u == C3是否成立 */byte[] C3 = new byte[DIGEST_LENGTH];if (debug)try {System.out.println("M = " + new String(M, "UTF8"));} catch (UnsupportedEncodingException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}System.arraycopy(encryptData, encryptData.length - DIGEST_LENGTH, C3, 0, DIGEST_LENGTH);byte[] u = sm3hash(dBC1.getXCoord().toBigInteger().toByteArray(), M,dBC1.getYCoord().toBigInteger().toByteArray());if (Arrays.equals(u, C3)) {if (debug)System.out.println("解密成功");try {return new String(M, "UTF8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}return null;} else {if (debug) {System.out.print("u = ");printHexString(u);System.out.print("C3 = ");printHexString(C3);System.err.println("解密驗證失敗");}return null;}}// /**// * SHA摘要// * @param x2// * @param M// * @param y2// * @return// */// private byte[] calculateHash(BigInteger x2, byte[] M, BigInteger y2) {// ShortenedDigest digest = new ShortenedDigest(new SHA256Digest(),// DIGEST_LENGTH);// byte[] buf = x2.toByteArray();// digest.update(buf, 0, buf.length);// digest.update(M, 0, M.length);// buf = y2.toByteArray();// digest.update(buf, 0, buf.length);//// buf = new byte[DIGEST_LENGTH];// digest.doFinal(buf, 0);//// return buf;// }/*** 判斷是否在范圍內** @param param* @param min* @param max* @return*/private boolean between(BigInteger param, BigInteger min, BigInteger max) {if (param.compareTo(min) >= 0 && param.compareTo(max) < 0) {return true;} else {return false;}}/*** 判斷生成的公鑰是否合法** @param publicKey* @return*/private boolean checkPublicKey(ECPoint publicKey) {if (!publicKey.isInfinity()) {BigInteger x = publicKey.getXCoord().toBigInteger();BigInteger y = publicKey.getYCoord().toBigInteger();if (between(x, new BigInteger("0"), p) && between(y, new BigInteger("0"), p)) {BigInteger xResult = x.pow(3).add(a.multiply(x)).add(b).mod(p);if (debug)System.out.println("xResult: " + xResult.toString());BigInteger yResult = y.pow(2).mod(p);if (debug)System.out.println("yResult: " + yResult.toString());if (yResult.equals(xResult) && publicKey.multiply(n).isInfinity()) {return true;}}}return false;}/*** 生成密鑰對** @return*/public SM2KeyPair generateKeyPair() {BigInteger d = random(n.subtract(new BigInteger("1")));SM2KeyPair keyPair = new SM2KeyPair(G.multiply(d).normalize(), d);if (checkPublicKey(keyPair.getPublicKey())) {if (debug)System.out.println("generate key successfully");return keyPair;} else {if (debug)System.err.println("generate key failed");return null;}}public SM2() {curve = new ECCurve.Fp(p, // qa, // ab); // bG = curve.createPoint(gx, gy);ecc_bc_spec = new ECDomainParameters(curve, G, n);}public SM2(boolean debug) {this();this.debug = debug;}/*** 導出公鑰到本地** @param publicKey* @param path*/public void exportPublicKey(ECPoint publicKey, String path) {File file = new File(path);try {if (!file.exists())file.createNewFile();byte buffer[] = publicKey.getEncoded(false);FileOutputStream fos = new FileOutputStream(file);fos.write(buffer);fos.close();} catch (IOException e) {e.printStackTrace();}}/*** 從本地導入公鑰** @param path* @return*/public ECPoint importPublicKey(String path) {File file = new File(path);try {if (!file.exists())return null;FileInputStream fis = new FileInputStream(file);ByteArrayOutputStream baos = new ByteArrayOutputStream();byte buffer[] = new byte[16];int size;while ((size = fis.read(buffer)) != -1) {baos.write(buffer, 0, size);}fis.close();return curve.decodePoint(baos.toByteArray());} catch (IOException e) {e.printStackTrace();}return null;}/*** 導出私鑰到本地** @param privateKey* @param path*/public void exportPrivateKey(BigInteger privateKey, String path) {File file = new File(path);try {if (!file.exists())file.createNewFile();ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));oos.writeObject(privateKey);oos.close();} catch (IOException e) {e.printStackTrace();}}/*** 從本地導入私鑰** @param path* @return*/public BigInteger importPrivateKey(String path) {File file = new File(path);try {if (!file.exists())return null;FileInputStream fis = new FileInputStream(file);ObjectInputStream ois = new ObjectInputStream(fis);BigInteger res = (BigInteger) (ois.readObject());ois.close();fis.close();return res;} catch (Exception e) {e.printStackTrace();}return null;}/*** 字節數組拼接** @param params* @return*/private static byte[] join(byte[]... params) {ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[] res = null;try {for (int i = 0; i < params.length; i++) {baos.write(params[i]);}res = baos.toByteArray();} catch (IOException e) {e.printStackTrace();}return res;}/*** sm3摘要** @param params* @return*/private static byte[] sm3hash(byte[]... params) {byte[] res = null;try {res = SM3.hash(join(params));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return res;}/*** 取得用戶標識字節數組** @param IDA* @param aPublicKey* @return*/private static byte[] ZA(String IDA, ECPoint aPublicKey) {byte[] idaBytes = IDA.getBytes();int entlenA = idaBytes.length * 8;byte[] ENTLA = new byte[] { (byte) (entlenA & 0xFF00), (byte) (entlenA & 0x00FF) };byte[] ZA = sm3hash(ENTLA, idaBytes, a.toByteArray(), b.toByteArray(), gx.toByteArray(), gy.toByteArray(),aPublicKey.getXCoord().toBigInteger().toByteArray(),aPublicKey.getYCoord().toBigInteger().toByteArray());return ZA;}/*** 簽名** @param M* 簽名信息* @param IDA* 簽名方唯一標識* @param keyPair* 簽名方密鑰對* @return 簽名*/public Signature sign(String M, String IDA, SM2KeyPair keyPair) {byte[] ZA = ZA(IDA, keyPair.getPublicKey());byte[] M_ = join(ZA, M.getBytes());BigInteger e = new BigInteger(1, sm3hash(M_));// BigInteger k = new BigInteger(// "6CB28D99 385C175C 94F94E93 4817663F C176D925 DD72B727 260DBAAE// 1FB2F96F".replace(" ", ""), 16);BigInteger k;BigInteger r;do {k = random(n);ECPoint p1 = G.multiply(k).normalize();BigInteger x1 = p1.getXCoord().toBigInteger();r = e.add(x1);r = r.mod(n);} while (r.equals(BigInteger.ZERO) || r.add(k).equals(n));BigInteger s = ((keyPair.getPrivateKey().add(BigInteger.ONE).modInverse(n)).multiply((k.subtract(r.multiply(keyPair.getPrivateKey()))).mod(n))).mod(n);return new Signature(r, s);}/*** 驗簽** @param M* 簽名信息* @param signature* 簽名* @param IDA* 簽名方唯一標識* @param aPublicKey* 簽名方公鑰* @return true or false*/public boolean verify(String M, Signature signature, String IDA, ECPoint aPublicKey) {if (!between(signature.r, BigInteger.ONE, n))return false;if (!between(signature.s, BigInteger.ONE, n))return false;byte[] M_ = join(ZA(IDA, aPublicKey), M.getBytes());BigInteger e = new BigInteger(1, sm3hash(M_));BigInteger t = signature.r.add(signature.s).mod(n);if (t.equals(BigInteger.ZERO))return false;ECPoint p1 = G.multiply(signature.s).normalize();ECPoint p2 = aPublicKey.multiply(t).normalize();BigInteger x1 = p1.add(p2).normalize().getXCoord().toBigInteger();BigInteger R = e.add(x1).mod(n);if (R.equals(signature.r))return true;return false;}/*** 密鑰派生函數** @param Z* @param klen* 生成klen字節數長度的密鑰* @return*/private static byte[] KDF(byte[] Z, int klen) {int ct = 1;int end = (int) Math.ceil(klen * 1.0 / 32);ByteArrayOutputStream baos = new ByteArrayOutputStream();try {for (int i = 1; i < end; i++) {baos.write(sm3hash(Z, SM3.toByteArray(ct)));ct++;}byte[] last = sm3hash(Z, SM3.toByteArray(ct));if (klen % 32 == 0) {baos.write(last);} elsebaos.write(last, 0, klen % 32);return baos.toByteArray();} catch (Exception e) {e.printStackTrace();}return null;}/*** 傳輸實體類** @author Potato**/private static class TransportEntity implements Serializable {final byte[] R; //R點final byte[] S; //驗證Sfinal byte[] Z; //用戶標識final byte[] K; //公鑰public TransportEntity(byte[] r, byte[] s,byte[] z,ECPoint pKey) {R = r;S = s;Z=z;K=pKey.getEncoded(false);}}/*** 密鑰協商輔助類** @author Potato**/public static class KeyExchange {BigInteger rA;ECPoint RA;ECPoint V;byte[] Z;byte[] key;String ID;SM2KeyPair keyPair;public KeyExchange(String ID,SM2KeyPair keyPair) {this.ID=ID;this.keyPair = keyPair;this.Z=ZA(ID, keyPair.getPublicKey());}/*** 密鑰協商發起第一步** @return*/public TransportEntity keyExchange_1() {rA = random(n);// rA=new BigInteger("83A2C9C8 B96E5AF7 0BD480B4 72409A9A 327257F1// EBB73F5B 073354B2 48668563".replace(" ", ""),16);RA = G.multiply(rA).normalize();return new TransportEntity(RA.getEncoded(false), null,Z,keyPair.getPublicKey());}/*** 密鑰協商響應方** @param entity 傳輸實體* @return*/public TransportEntity keyExchange_2(TransportEntity entity) {BigInteger rB = random(n);// BigInteger rB=new BigInteger("33FE2194 0342161C 55619C4A 0C060293// D543C80A F19748CE 176D8347 7DE71C80".replace(" ", ""),16);ECPoint RB = G.multiply(rB).normalize();this.rA=rB;this.RA=RB;BigInteger x2 = RB.getXCoord().toBigInteger();x2 = _2w.add(x2.and(_2w.subtract(BigInteger.ONE)));BigInteger tB = keyPair.getPrivateKey().add(x2.multiply(rB)).mod(n);ECPoint RA = curve.decodePoint(entity.R).normalize();BigInteger x1 = RA.getXCoord().toBigInteger();x1 = _2w.add(x1.and(_2w.subtract(BigInteger.ONE)));ECPoint aPublicKey=curve.decodePoint(entity.K).normalize();ECPoint temp = aPublicKey.add(RA.multiply(x1).normalize()).normalize();ECPoint V = temp.multiply(ecc_bc_spec.getH().multiply(tB)).normalize();if (V.isInfinity())throw new IllegalStateException();this.V=V;byte[] xV = V.getXCoord().toBigInteger().toByteArray();byte[] yV = V.getYCoord().toBigInteger().toByteArray();byte[] KB = KDF(join(xV, yV, entity.Z, this.Z), 16);key = KB;System.out.print("協商得B密鑰:");printHexString(KB);byte[] sB = sm3hash(new byte[] { 0x02 }, yV,sm3hash(xV, entity.Z, this.Z, RA.getXCoord().toBigInteger().toByteArray(),RA.getYCoord().toBigInteger().toByteArray(), RB.getXCoord().toBigInteger().toByteArray(),RB.getYCoord().toBigInteger().toByteArray()));return new TransportEntity(RB.getEncoded(false), sB,this.Z,keyPair.getPublicKey());}/*** 密鑰協商發起方第二步** @param entity 傳輸實體*/public TransportEntity keyExchange_3(TransportEntity entity) {BigInteger x1 = RA.getXCoord().toBigInteger();x1 = _2w.add(x1.and(_2w.subtract(BigInteger.ONE)));BigInteger tA = keyPair.getPrivateKey().add(x1.multiply(rA)).mod(n);ECPoint RB = curve.decodePoint(entity.R).normalize();BigInteger x2 = RB.getXCoord().toBigInteger();x2 = _2w.add(x2.and(_2w.subtract(BigInteger.ONE)));ECPoint bPublicKey=curve.decodePoint(entity.K).normalize();ECPoint temp = bPublicKey.add(RB.multiply(x2).normalize()).normalize();ECPoint U = temp.multiply(ecc_bc_spec.getH().multiply(tA)).normalize();if (U.isInfinity())throw new IllegalStateException();this.V=U;byte[] xU = U.getXCoord().toBigInteger().toByteArray();byte[] yU = U.getYCoord().toBigInteger().toByteArray();byte[] KA = KDF(join(xU, yU,this.Z, entity.Z), 16);key = KA;System.out.print("協商得A密鑰:");printHexString(KA);byte[] s1= sm3hash(new byte[] { 0x02 }, yU,sm3hash(xU, this.Z, entity.Z, RA.getXCoord().toBigInteger().toByteArray(),RA.getYCoord().toBigInteger().toByteArray(), RB.getXCoord().toBigInteger().toByteArray(),RB.getYCoord().toBigInteger().toByteArray()));if(Arrays.equals(entity.S, s1))System.out.println("B->A 密鑰確認成功");elseSystem.out.println("B->A 密鑰確認失敗");byte[] sA= sm3hash(new byte[] { 0x03 }, yU,sm3hash(xU, this.Z, entity.Z, RA.getXCoord().toBigInteger().toByteArray(),RA.getYCoord().toBigInteger().toByteArray(), RB.getXCoord().toBigInteger().toByteArray(),RB.getYCoord().toBigInteger().toByteArray()));return new TransportEntity(RA.getEncoded(false), sA,this.Z,keyPair.getPublicKey());}/*** 密鑰確認最后一步** @param entity 傳輸實體*/public void keyExchange_4(TransportEntity entity) {byte[] xV = V.getXCoord().toBigInteger().toByteArray();byte[] yV = V.getYCoord().toBigInteger().toByteArray();ECPoint RA = curve.decodePoint(entity.R).normalize();byte[] s2= sm3hash(new byte[] { 0x03 }, yV,sm3hash(xV, entity.Z, this.Z, RA.getXCoord().toBigInteger().toByteArray(),RA.getYCoord().toBigInteger().toByteArray(), this.RA.getXCoord().toBigInteger().toByteArray(),this.RA.getYCoord().toBigInteger().toByteArray()));if(Arrays.equals(entity.S, s2))System.out.println("A->B 密鑰確認成功");elseSystem.out.println("A->B 密鑰確認失敗");}}public static void main(String[] args) throws UnsupportedEncodingException {SM2 sm02 = new SM2();// BigInteger px = new BigInteger(// "0AE4C779 8AA0F119 471BEE11 825BE462 02BB79E2 A5844495 E97C04FF// 4DF2548A".replace(" ", ""), 16);// BigInteger py = new BigInteger(// "7C0240F8 8F1CD4E1 6352A73C 17B7F16F 07353E53 A176D684 A9FE0C6B// B798E857".replace(" ", ""), 16);// ECPoint publicKey = sm02.curve.createPoint(px, py);// BigInteger privateKey = new BigInteger(// "128B2FA8 BD433C6C 068C8D80 3DFF7979 2A519A55 171B1B65 0C23661D// 15897263".replace(" ", ""), 16);// SM2KeyPair keyPair = sm02.generateKeyPair();// ECPoint publicKey=keyPair.getPublicKey();// BigInteger privateKey=keyPair.getPrivateKey();// sm02.exportPublicKey(publicKey, "E:/publickey.pem");// sm02.exportPrivateKey(privateKey, "E:/privatekey.pem");System.out.println("-----------------公鑰加密與解密-----------------");ECPoint publicKey = sm02.importPublicKey("E:/publickey.pem");BigInteger privateKey = sm02.importPrivateKey("E:/privatekey.pem");byte[] data = sm02.encrypt("測試加密aaaaaaaaaaa123aabb", publicKey);System.out.print("密文:");SM2.printHexString(data);System.out.println("解密后明文:" + sm02.decrypt(data, privateKey));System.out.println("-----------------簽名與驗簽-----------------");String IDA = "Heartbeats";String M = "要簽名的信息";Signature signature = sm02.sign(M, IDA, new SM2KeyPair(publicKey, privateKey));System.out.println("用戶標識:" + IDA);System.out.println("簽名信息:" + M);System.out.println("數字簽名:" + signature);System.out.println("驗證簽名:" + sm02.verify(M, signature, IDA, publicKey));System.out.println("-----------------密鑰協商-----------------");String aID = "AAAAAAAAAAAAA";SM2KeyPair aKeyPair = sm02.generateKeyPair();KeyExchange aKeyExchange = new KeyExchange(aID,aKeyPair);String bID = "BBBBBBBBBBBBB";SM2KeyPair bKeyPair = sm02.generateKeyPair();KeyExchange bKeyExchange = new KeyExchange(bID,bKeyPair);TransportEntity entity1 = aKeyExchange.keyExchange_1();TransportEntity entity2 = bKeyExchange.keyExchange_2(entity1);TransportEntity entity3 = aKeyExchange.keyExchange_3(entity2);bKeyExchange.keyExchange_4(entity3);}public static class Signature {BigInteger r;BigInteger s;public Signature(BigInteger r, BigInteger s) {this.r = r;this.s = s;}public String toString() {return r.toString(16) + "," + s.toString(16);}} } package com.example.demo.MIMAXUE.SM;import java.math.BigInteger;import org.bouncycastle.math.ec.ECPoint;/*** SM2密鑰對Bean* @author Potato**/ public class SM2KeyPair {private final ECPoint publicKey;private final BigInteger privateKey;SM2KeyPair(ECPoint publicKey, BigInteger privateKey) {this.publicKey = publicKey;this.privateKey = privateKey;}public ECPoint getPublicKey() {return publicKey;}public BigInteger getPrivateKey() {return privateKey;}} package com.example.demo.MIMAXUE.SM;import org.bouncycastle.math.ec.ECPoint;import java.io.IOException; import java.math.BigInteger;public class SM2Test {public static void main(String[] args) throws IOException {Long avgENCTime = 0L;Long avgDecTime = 0L;for(int i =0;i<10;i++){SM2 sm2 = new SM2();SM2KeyPair keys = sm2.generateKeyPair();BigInteger privateKey = keys.getPrivateKey();ECPoint publicKey = keys.getPublicKey();Long startTime = System.currentTimeMillis();byte[] encryptMessage = sm2.encryptFile(publicKey);//System.out.println("encrypt message\t"+encryptMessage);Long endTime = System.currentTimeMillis();System.out.println("sm2加密花費時間" + (endTime - startTime) + "ms");Long startTime1 = System.currentTimeMillis();String decryptMessage = sm2.decrypt(encryptMessage, privateKey);Long endTime1 = System.currentTimeMillis();System.out.println("sm2解密花費時間" + (endTime1 - startTime1) + "ms");avgENCTime+=(endTime-startTime);avgDecTime+=(endTime1-startTime1);//System.out.println("decrypt message\t"+decryptMessage);}System.out.println("********************************************************************************");System.out.println("aes平均加密花費時間" + avgENCTime/10 + "ms");System.out.println("aes平均加密花費時間" + avgDecTime/10 + "ms");} }

總結

以上是生活随笔為你收集整理的国密SM2非对称加密算法(对本地文件的加解密)代码展示的全部內容,希望文章能夠幫你解決所遇到的問題。

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

久久精品91久久久久久再现 | 九九九视频在线 | 精品不卡视频 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 国产福利精品在线观看 | 日日草视频 | 国产精品免费久久久久久久久久中文 | 免费日韩 精品中文字幕视频在线 | 欧美疯狂性受xxxxx另类 | 人人澡人人添人人爽一区二区 | 色婷婷国产在线 | 国产福利91精品一区 | 一级片黄色片网站 | 国产精品一区免费在线观看 | 国产精品99精品久久免费 | 97国产大学生情侣白嫩酒店 | 亚洲理论片在线观看 | 日韩精品欧美专区 | 在线黄av | 伊人午夜| 99久久9| 中文字幕五区 | 国产丝袜一区二区三区 | 91在线网址 | 99久在线精品99re8热视频 | 不卡视频在线 | 国产精品第一页在线 | 香蕉在线影院 | 日韩字幕 | 狠狠色丁香婷婷综合久小说久 | 国产高清中文字幕 | 免费观看www小视频的软件 | 97超碰国产在线 | 国产成人精品综合久久久 | 日韩黄色在线观看 | 国产高清中文字幕 | 欧美一区免费观看 | 国产一级做a | 国产免费一区二区三区最新6 | 97免费在线观看视频 | 成人h动漫在线看 | 日韩一二区在线 | 国产精品黄网站在线观看 | 四虎视频| 亚洲国产日韩欧美在线 | 91免费试看| 久久久久网站 | 久久久久久美女 | 91看片淫黄大片一级在线观看 | 中文字幕一区三区 | 99久久久成人国产精品 | 日韩欧美综合 | 黄色av电影一级片 | 丁香激情五月 | 久久激情日本aⅴ | 国产精品中文 | 国产在线欧美 | 最近免费在线观看 | 免费高清在线一区 | 国产香蕉av | 97av视频 | 2021国产在线视频 | 深爱婷婷 | 日韩电影中文字幕 | 久草在线视频首页 | 美女中文字幕 | 免费黄色激情视频 | 天天拍天天操 | 美女网站视频免费都是黄 | 国产精品久久精品国产 | 色婷婷综合激情 | 日韩理论在线视频 | 国产精品久久久久久久久久久久冷 | 国产成人三级在线观看 | 91精彩在线视频 | 97国产大学生情侣白嫩酒店 | 色射色| 精品国产精品国产偷麻豆 | se视频网址| 三上悠亚一区二区在线观看 | 精品一区三区 | 国产麻豆精品一区 | 欧美韩日视频 | 国内精品99 | 中文字幕黄色网 | 99 久久久久 | 亚洲经典视频在线观看 | 日韩午夜av | 欧美黄色特级片 | 91在线免费观看网站 | 亚洲视频免费在线看 | 九九综合久久 | 特级黄色视频毛片 | 久久亚洲综合国产精品99麻豆的功能介绍 | 欧美精品v国产精品 | 黄色大全在线观看 | 久久综合五月婷婷 | 久久99热这里只有精品 | 天天操比 | 精品久久免费看 | 视频一区二区国产 | 精品一区二区免费视频 | aaa毛片视频 | 97在线成人 | 日韩在线视频二区 | 成人黄色小说网 | av理论电影| 国产麻豆传媒 | 中文字幕电影在线 | 操操操日日 | 九草视频在线 | a黄色一级 | 日韩免费中文 | 亚洲动漫在线观看 | 久久国产精品区 | 国产免费大片 | 久久人视频| 国产在线观看,日本 | 99麻豆视频 | 精品九九九| 激情欧美丁香 | 五月婷婷丁香 | 日韩av片无码一区二区不卡电影 | 波多野结衣精品视频 | 国产伦理一区二区 | 97人人视频 | 国产成人免费在线 | 日本午夜在线观看 | 91九色精品 | 亚洲人成网站精品片在线观看 | 999久久 | 国产又粗又长又硬免费视频 | 日本精品视频一区 | 99久久精品免费看国产免费软件 | 999在线观看视频 | 永久av免费在线观看 | 黄色精品久久久 | 国产资源在线播放 | 久久在线免费观看视频 | 免费看三级黄色片 | 男女日麻批 | 中文字幕丝袜美腿 | 亚洲va欧美va | 91成人免费在线视频 | 激情综合色综合久久综合 | 日韩区视频| 久久久精品日本 | 午夜在线日韩 | 国产免费久久久久 | 99久久精品国产观看 | 在线成人免费电影 | 在线观看成人小视频 | www.香蕉视频 | 在线免费视频一区 | 久久99国产精品 | 探花视频在线观看免费 | 免费观看www小视频的软件 | 精品久久毛片 | 中文字幕亚洲欧美 | 日韩久久精品一区二区三区下载 | 九九热视频在线 | 成人免费观看在线视频 | 97免费视频在线 | 亚洲国产成人在线 | 亚洲视频www | 亚洲精品白浆高清久久久久久 | 在线超碰av | 91精品国产乱码久久 | 久久精品一级片 | 欧美二区三区91 | 亚洲成av人片一区二区梦乃 | 久久高清国产 | 久久三级视频 | h久久| 人人插人人草 | 亚洲成人在线免费 | 久久久久久久久网站 | 亚洲精品美女久久久久网站 | 亚洲全部视频 | 狠狠成人 | 国产在线视频不卡 | 国产在线观看你懂的 | 欧美日韩在线观看一区二区 | 久久综合久久综合久久综合 | 亚洲精品黄色在线观看 | 在线免费观看视频 | 成人理论在线观看 | 黄色在线视频网址 | 天堂在线一区二区 | 国产 成人 久久 | 奇米网8888 | 久久综合电影 | 韩国av免费在线 | 久草男人天堂 | 亚洲成a人片77777kkkk1在线观看 | 91精品国产欧美一区二区 | 日韩专区在线观看 | 久久手机免费视频 | 亚洲精品大片www | 在线观看视频国产一区 | 成人动漫一区二区 | 亚洲三级av | 色婷婷激情四射 | 中日韩在线视频 | 国产又粗又猛又色又黄网站 | 九九精品久久 | 久久综合九色综合欧美就去吻 | 中文字幕在线观看完整版电影 | 夜夜操夜夜干 | 国产精品丝袜在线 | 国产精品一区二区三区在线免费观看 | 国产精品免费观看网站 | 久久久久麻豆 | 久久极品 | 国产精品18久久久久久久久 | 国产在线国偷精品产拍免费yy | 天天看天天操 | 国产精品久久一区二区三区, | 色婷婷综合视频在线观看 | 狠狠干.com | 麻豆91在线观看 | 一区二区三区在线视频观看58 | 亚洲视频在线观看网站 | 精品久久久久久亚洲综合网站 | 亚洲专区在线播放 | 日韩区欠美精品av视频 | 久久视频一区 | .国产精品成人自产拍在线观看6 | 国产精品96久久久久久吹潮 | 97电院网手机版 | 香蕉视频在线免费看 | 国产精品成人av在线 | 免费黄色激情视频 | 国产一区二区不卡视频 | 国产在线播放不卡 | 亚洲国产日韩欧美在线 | 色天天久久 | 久久久久久久久免费视频 | av网站大全免费 | 精品乱码一区二区三四区 | 欧美日韩精品在线免费观看 | 一区二区三区精品久久久 | 久久99久久99久久 | 福利视频导航网址 | 99热超碰 | 激情网五月婷婷 | www.亚洲精品| 99视频国产精品 | 在线一区二区三区 | 色久五月| 在线观看av大片 | 91超级碰| 成片免费观看视频 | 国产精品v a免费视频 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产在线91精品 | 久久久www免费电影网 | 中文字幕久久精品亚洲乱码 | 亚洲日韩精品欧美一区二区 | 日本中文字幕久久 | 在线免费黄网站 | av动图 | 国产高清视频在线播放一区 | 不卡的一区二区三区 | 最近中文字幕高清字幕免费mv | 黄色精品一区二区 | 丁香av在线 | 久久久久免费精品 | 久久久久久久久久久久电影 | 久久色中文字幕 | 在线99热 | 91资源在线观看 | 久久在线视频在线 | 亚洲禁18久人片 | 国产一区成人在线 | av千婊在线免费观看 | 国产分类视频 | 国产精品美女久久久久久免费 | 国产亚洲精品久久久久久大师 | 免费黄色网址大全 | 精品不卡视频 | 久久激情视频网 | 国产精品1区2区3区 久久免费视频7 | av午夜电影 | 国产糖心vlog在线观看 | 日日干日日| 超碰99人人| 国产精品中文字幕av | 亚洲一级片在线看 | 欧美老人xxxx18| 久久影视中文字幕 | 在线观看亚洲专区 | 国产精品丝袜 | 中文字幕在线影视资源 | 97免费视频在线 | 经典三级一区 | 91在线精品播放 | 国产精品乱码在线 | 99 精品 在线 | 激情亚洲综合在线 | 欧美综合国产 | 中文字幕国产一区二区 | 国产成人专区 | 中文字幕在线视频一区二区 | 国产精品久久久久aaaa九色 | 97超碰在线免费 | 国产h片在线观看 | 色在线国产 | 免费视频在线观看网站 | 亚洲精品在线观看网站 | 久草| 偷拍精品一区二区三区 | 国产二级视频 | 欧美精彩视频 | а天堂中文最新一区二区三区 | 欧美国产日韩一区二区三区 | 色偷偷88欧美精品久久久 | 精品视频免费 | 亚洲一区二区三区在线看 | www激情久久 | 97高清视频 | 国产日韩欧美综合在线 | 久久久久一区二区三区 | 免费黄色av. | 人人爽人人搞 | 亚洲国产成人在线 | 国产人免费人成免费视频 | 日韩视频免费观看高清完整版在线 | 激情综合色综合久久综合 | 国产伦理一区二区三区 | 日韩在线免费不卡 | 中文字幕乱码一区二区 | 久久爱992xxoo | 2023年中文无字幕文字 | 国产一级片一区二区三区 | 亚洲乱亚洲乱妇 | 国产精品亚洲精品 | 亚洲精品66 | av福利超碰网站 | 久久国产精品一区二区三区 | 天堂在线v | 狠狠色免费 | 精品视频9999 | 久久精品4 | 色综合久久久久久久 | 国产精品毛片一区二区 | 亚洲人人精品 | 久久99网站 | 99精品黄色片免费大全 | 成人性生交大片免费看中文网站 | 中文字幕精品在线 | 午夜影视一区 | 在线免费观看羞羞视频 | 成人影音av | 欧美成人va | 国产成人一区二区三区免费看 | 成年人免费观看国产 | 日本精品视频在线 | www在线观看国产 | 欧美日韩国产一区二区三区在线观看 | 在线观看视频你懂的 | 99热官网 | 免费在线观看一区二区三区 | 91免费在线看片 | 成人在线视频一区 | 97人人澡人人爽人人模亚洲 | 美女视频黄频 | 亚洲欧美成人综合 | 婷婷精品国产欧美精品亚洲人人爽 | 99综合电影在线视频 | 日韩欧美网址 | 国产成人久久精品77777综合 | 亚洲精品 在线视频 | 免费黄色av电影 | 美女视频免费精品 | 亚洲一区二区三区miaa149 | 日韩偷拍精品 | 欧美精品久久久久久久久久 | 日韩成人不卡 | 天天操网站 | 国内精品久久久久久 | 一级精品视频在线观看宜春院 | 在线一二三区 | 色爱成人网 | 成人免费大片黄在线播放 | 亚洲成 人精品 | 天天天综合 | 91精品啪在线观看国产 | 97成人精品视频在线观看 | 国产人成精品一区二区三 | 精品一区在线看 | www.69xx| a在线免费观看视频 | 天天射天天干 | 欧美另类xxxx | 在线免费av播放 | 99这里只有久久精品视频 | 久久久久免费网站 | 嫩小bbbb摸bbb摸bbb| 中文在线a√在线 | 久久久久亚洲国产 | av大片免费 | 精品在线视频一区二区三区 | 日日夜夜综合网 | 狠狠操狠狠干天天操 | 成人四虎影院 | 国产99久久精品一区二区永久免费 | 国产精品成人自拍 | 911久久香蕉国产线看观看 | 久久美女精品 | 国产一级h | 99热在线免费观看 | 国产精品理论片在线播放 | 国产系列精品av | 中文字幕在线观看2018 | 日本精品视频免费 | 一区二区在线影院 | 麻豆观看 | 99精品热视频只有精品10 | 精品国产电影一区 | 国产精品久久婷婷六月丁香 | 免费视频a | 久久免费国产视频 | 午夜av免费 | 成人高清在线 | 欧美伦理电影一区二区 | 干av在线| 天海翼一区二区三区免费 | 97av色| 国产九九精品 | 中文av资源站 | 日韩在线免费看 | 国产成人在线看 | 色噜噜日韩精品一区二区三区视频 | 2019久久精品 | 日本天天操 | 国产高清亚洲 | 成人午夜电影在线播放 | 狠狠干天天射 | 久草在线免费资源站 | 色婷婷久久久综合中文字幕 | 一区二区三区福利 | 久久久精品国产免费观看同学 | 日韩一二三| 久久久久综合网 | 全黄色一级片 | 9幺看片| 日韩免费不卡视频 | 久久综合中文字幕 | 色婷婷狠狠五月综合天色拍 | 91精品小视频 | 日本中文一区二区 | 久久精品久久精品久久39 | 亚州精品天堂中文字幕 | 国产精品情侣视频 | 天天干天天做天天爱 | 亚洲国产精品资源 | 人人看黄色 | 久草在线视频新 | 日本 在线 视频 中文 有码 | av片无限看 | 久久论理 | 天天综合精品 | 玖操| 精品一区二区精品 | 九九热re| 韩日电影在线免费看 | 在线观看91精品国产网站 | 久久久影片 | 久久a免费视频 | 精品在线视频观看 | 九九九九九精品 | 91手机视频 | 亚洲成人精品久久 | 久久精品久久久精品美女 | 中文字幕色婷婷在线视频 | 少妇视频一区 | av综合网址 | 最近中文字幕免费视频 | 亚洲经典在线 | 色综合五月 | www免费看片com | 在线观看一级片 | 欧美精品久久人人躁人人爽 | 激情婷婷av| 成人网页在线免费观看 | 97精品国产91久久久久久 | 91精品国产自产在线观看永久 | 国产精品原创av片国产免费 | 日韩av高清 | 日本少妇久久久 | 91精品视频免费看 | 欧美精品一区二区蜜臀亚洲 | 亚洲黄色精品 | 天天综合网入口 | 免费电影一区二区三区 | 一本大道久久精品懂色aⅴ 五月婷社区 | 亚洲精品视频久久 | 97视频人人澡人人爽 | 亚洲色图美腿丝袜 | 日韩精品视频免费看 | 天天爽天天爽夜夜爽 | 粉嫩高清一区二区三区 | 国产中文字幕网 | 日韩免费一区二区 | 日韩高清毛片 | 四虎成人免费观看 | 免费色视频在线 | 国产麻豆剧果冻传媒视频播放量 | 天天射天天做 | 黄色av电影| 国产精品人人做人人爽人人添 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产精品久久久久久久午夜片 | 在线亚洲观看 | 精品视频久久久久久 | 久久少妇免费视频 | 奇米导航 | 中文在线字幕免 | 免费在线播放av电影 | 91人人澡 | 97免费在线观看 | 日韩字幕| 天天操天天玩 | 婷婷色狠狠 | 91在线免费观看国产 | 狠狠夜夜 | 中文字幕精品一区久久久久 | 日韩欧美高清在线观看 | 91精品伦理 | 久久久精品小视频 | 久草com| 欧美性大胆 | 国产精品久久久久久久久久久久午夜 | 日韩无在线 | 91秒拍国产福利一区 | 国产日韩三级 | 中文字幕之中文字幕 | 狠狠网亚洲精品 | 免费91麻豆精品国产自产在线观看 | 欧美做受高潮电影o | 97碰视频| 日韩欧美一区二区在线播放 | 亚洲黄色在线播放 | 久久超级碰视频 | 不卡中文字幕在线 | 免费影视大全推荐 | 亚洲aⅴ在线 | 天天综合久久 | 免费观看一级一片 | 91资源在线 | 久久久精品国产免费观看一区二区 | 天天色影院 | 中文字幕一区二区三区在线播放 | 97精品久久人人爽人人爽 | 9在线观看免费高清完整版 玖玖爱免费视频 | 免费在线看v | 日日干天天爽 | 日韩欧美电影在线观看 | 成人福利在线 | 久久人人爽人人爽人人片 | 中文字幕色在线 | 日韩黄色在线电影 | 17婷婷久久www | 中文字幕在线观看免费高清完整版 | 日韩在线视 | 午夜视频99| 亚洲韩国一区二区三区 | 日韩av不卡播放 | 亚洲精品av中文字幕在线在线 | 色欲综合视频天天天 | 色婷婷激情综合 | 综合激情av| 亚洲国产精品500在线观看 | 在线观看色网 | 成人三级av | 99久久综合狠狠综合久久 | 日本中文字幕免费观看 | 黄色免费观看网址 | 成人超碰在线 | 中国一级片视频 | 久草精品电影 | 99精品乱码国产在线观看 | 国产精品精品视频 | 在线播放一区二区三区 | 日韩成人免费在线电影 | 久久观看最新视频 | 亚洲日韩欧美一区二区在线 | 伊人热 | 色国产精品一区在线观看 | 国产一区视频在线播放 | 色婷婷伊人| 99精品国产一区二区 | 欧美日韩二区三区 | 高清av网| 一级欧美日韩 | 91豆麻精品91久久久久久 | 久久99精品国产91久久来源 | 精品伊人久久久 | 久久久久免费看 | 国产成人久久av | 欧美日韩国产一二三区 | 国产精品一区在线 | 91av在线播放视频 | 五月婷婷中文网 | 三上悠亚一区二区在线观看 | 中文av日韩 | 国产91亚洲精品 | 国产亚洲在| 国产探花视频在线播放 | 日韩国产精品久久久久久亚洲 | 综合在线色| 奇米网在线观看 | 欧美精品久久久久久久久久白贞 | 欧美一级xxxx | 色综合 久久精品 | 成人三级网址 | 久久精品中文字幕少妇 | 成人99免费视频 | 中文字幕精品www乱入免费视频 | 国产一区在线免费观看视频 | 亚洲精品视频大全 | 精品福利网 | 色开心| 精品国产一区二区三区久久影院 | 中文字幕一区二区三 | 免费看日韩片 | 欧美日韩另类在线观看 | 在线日韩三级 | 日本中文在线观看 | 精品国产一区二区三区av性色 | 亚洲永久精品一区 | 国产999在线| 国内精品久久久久影院日本资源 | 福利精品在线 | 99视频网址 | 在线精品视频免费观看 | 久久久免费网站 | av中文字幕网址 | 欧美孕妇视频 | 亚洲成人精品 | 深爱开心激情网 | 女人魂免费观看 | 国产成人一区二 | 国产亚洲资源 | 日韩精品一区二区免费视频 | 久精品在线观看 | 亚洲在线视频免费 | 亚洲伦理一区二区 | 国产精品麻豆91 | 三级av黄色 | 久久97精品 | 国产精品久久久久久久久免费看 | 在线免费91 | 精品久久久久久久久亚洲 | 成人a级免费视频 | 亚洲天堂精品视频在线观看 | 女女av在线 | 午夜久久久久久久久久久 | 丁香花在线视频观看免费 | 久久伊99综合婷婷久久伊 | 国产在线第三页 | www.婷婷色 | 国产高清第一页 | 黄色av一区二区三区 | 在线观看免费色 | 91亚洲精品久久久 | 国产剧情一区二区 | 日本激情动作片免费看 | 国产午夜激情视频 | 婷婷激情久久 | 国产精品永久 | 精品9999 | 777视频在线观看 | 狠狠色丁香婷综合久久 | 久久精品视频国产 | 久久久久国产视频 | 日韩av女优视频 | av免费观看网址 | 久久成人亚洲欧美电影 | 久久精品99国产精品酒店日本 | 午夜天天操| 青青视频一区 | 在线小视频国产 | 久久情爱 | 成年人黄色免费网站 | 久久视频一区二区 | 欧美日韩国产一区 | 欧美黄色成人 | 91久色蝌蚪| 一区二区三区中文字幕在线 | 婷婷日| 国内精品久久久久影院男同志 | 日韩免费不卡av | 一级片黄色片网站 | 日韩av一区二区三区在线观看 | 蜜臀aⅴ国产精品久久久国产 | 久久6精品 | av高清不卡 | 久草精品免费 | 久久久影片 | 日本二区三区在线 | 色综合国产 | 日韩欧美国产视频 | 六月久久婷婷 | 99在线免费视频 | 91黄色影视| 久久精品波多野结衣 | 国产精品一区欧美 | 亚洲男模gay裸体gay | 在线观看国产区 | 一区二区三区在线观看免费视频 | 欧美爽爽爽 | 在线免费视频 你懂得 | 色婷av| 成人黄色电影在线播放 | 欧美日韩综合在线 | 欧美va在线观看 | 免费a一级 | 日韩激情小视频 | 日韩电影在线观看一区 | 国产美女精品人人做人人爽 | 超碰免费观看 | 久久成熟 | 久久精品国产一区 | 免费观看国产精品视频 | 一区二区在线不卡 | 久久免费的视频 | 免费观看性生交大片3 | 久久躁日日躁aaaaxxxx | 久草免费在线观看视频 | 九七人人干 | 伊人久久一区 | 天天干,夜夜操 | 免费观看成人网 | 日本中文字幕在线 | 国产精品久久久久久爽爽爽 | 免费看一级特黄a大片 | 久久久久亚洲精品国产 | 一区二区三区电影大全 | 免费久久久久久久 | 久久久免费毛片 | 亚洲 欧美 国产 va在线影院 | 99热这里有 | 国产精品久久久久一区二区三区共 | 999国内精品永久免费视频 | 制服丝袜在线91 | 国产免费观看久久黄 | 在线观看www视频 | 国产精品18毛片一区二区 | 国产一区二区在线免费观看 | 在线观看aa | 国产尤物在线视频 | 久久草 | 99久久婷婷 | 久久久午夜剧场 | 99视频导航 | 国产在线999 | 久久成人久久 | 超薄丝袜一二三区 | 天天干天天干天天射 | 欧美成人在线网站 | 国内视频在线 | 一区二区三区日韩在线 | 亚洲视频免费视频 | 91色一区二区三区 | 国产日韩欧美视频在线观看 | 久久高清毛片 | 丁香高清视频在线看看 | 国产一级视频在线免费观看 | 国产精品久久久久久欧美 | 香蕉视频啪啪 | 美女福利视频一区二区 | 亚洲国产精品500在线观看 | www四虎影院 | 最近中文字幕视频完整版 | 中文字幕中文字幕在线中文字幕三区 | 九七人人干 | 视频精品一区二区三区 | 久久久这里有精品 | 在线视频中文字幕一区 | 亚洲午夜久久久久久久久 | 日韩超碰在线 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 国产高清不卡av | 亚州精品天堂中文字幕 | 久久夜色精品国产欧美乱极品 | 国产成人精品亚洲日本在线观看 | 日韩一级电影在线观看 | 在线黄色免费av | 久久久 激情 | 国产首页 | 日韩肉感妇bbwbbwbbw | 夜夜操夜夜干 | 91精品国产网站 | 国产91在线 | 美洲 | 欧美美女一级片 | 日韩 在线a | 91精品啪在线观看国产81旧版 | 国产精品乱看 | 欧美日韩免费观看一区二区三区 | 久久综合精品国产一区二区三区 | 国产手机在线观看 | 国产精品美女免费视频 | 国产色妞影院wwwxxx | 99视频播放 | 一区二区精品视频 | 激情av五月婷婷 | 日韩av片免费在线观看 | 日本高清xxxx | 毛片播放网站 | 久久久性| 国产亚洲精品电影 | 久久久久久99精品 | 亚洲91网站 | 国产精品久久久久久吹潮天美传媒 | 亚洲人人射| 亚洲 欧美 另类人妖 | 久草在线资源免费 | av电影 一区二区 | 亚洲第一av在线播放 | 99久久精品无码一区二区毛片 | 伊人伊成久久人综合网站 | 91九色蝌蚪国产 | 国产亚洲精品中文字幕 | 国产精品热视频 | 久久精品99久久久久久 | 永久免费观看视频 | 特级毛片网| 精品少妇一区二区三区在线 | 99热这里只有精品免费 | 激情网婷婷 | 国产精品婷婷午夜在线观看 | 狠狠色丁香婷综合久久 | 草久电影 | av一区在线播放 | 日韩黄色在线 | 亚洲精品在线观 | 国产精品免费视频一区二区 | 欧美亚洲国产精品久久高清浪潮 | 最近免费中文字幕 | 亚洲毛片久久 | 草久中文字幕 | 成人av片免费看 | 又黄又色又爽 | 91久久影院 | 国产女人18毛片水真多18精品 | 国产成人精品国内自产拍免费看 | 亚洲精品日韩一区二区电影 | 欧美婷婷综合 | 日韩免费av在线 | 伊人伊成久久人综合网小说 | 嫩草伊人久久精品少妇av | 又黄又刺激又爽的视频 | 国产一区二区不卡视频 | 99色| 天天干,天天插 | 69视频在线 | 99免费观看视频 | 国产美女永久免费 | 在线成人欧美 | 亚洲精品视频在线看 | 国产精品一区二区久久久 | 国内精品久久天天躁人人爽 | 狠狠操狠狠操 | 精品国产一区二区三区不卡 | 一区二区视频在线播放 | 久久综合毛片 | 亚洲天堂色婷婷 | 97色在线观看 | 国内精品小视频 | 在线观看激情av | 国产香蕉久久精品综合网 | 天天射综合网视频 | 国产99精品在线观看 | 91精品视频在线 | 国产色婷婷精品综合在线手机播放 | 亚洲成人av影片 | 在线欧美日韩 | 欧美日韩另类视频 | 精品美女久久 | 久久久久久久久久影院 | 国产精品久久久久9999吃药 | 国产精品久久久免费看 | 天天射综合网站 | 97精品国产97久久久久久久久久久久 | 免费在线黄 | 国产成人区 | 久草在线视频网站 | 干 操 插| 日韩在线视 | 日韩最新中文字幕 | 久久精品影视 | av片在线观看免费 | 日韩欧美中文 | 中文字幕二区在线观看 | 人人爽人人香蕉 | 又色又爽又黄高潮的免费视频 | 亚洲精品综合欧美二区变态 | 免费又黄又爽 | 成人欧美日韩国产 | 国产精品男女啪啪 | 91av短视频 | 欧洲精品二区 | 日日爽天天 | 亚洲国产成人精品在线 | 爱干视频 | 国产大陆亚洲精品国产 | 国际精品网 | www.人人干| 91最新网址在线观看 | 久久久久国产成人精品亚洲午夜 | 色婷婷综合在线 | 波多野结衣在线视频免费观看 | 国产精品久久久久久久婷婷 | 精品视频9999 | 欧美精品久久久久久久久久久 | 中文字幕在线视频精品 | 91伊人| 91在线精品秘密一区二区 | 国产在线观看污片 | 69视频在线 | 欧美精品三级在线观看 | 亚洲天堂精品视频在线观看 | 成人av av在线 | 日本高清dvd | 精品视频免费在线 | 久久综合色影院 | 91精品秘密在线观看 | 久久成年人视频 | 在线观看韩日电影免费 | 日韩三级视频在线看 | 99热在| 碰超在线观看 | 亚洲视频一级 | 狠狠色噜噜狠狠狠狠2021天天 | 亚洲1级片| 亚洲视频在线免费看 | 国产精品久久一区二区无卡 | 精品国产乱码一区二 | 亚洲天堂va| 91看片在线看片 | 国产一区二区三区免费视频 | 亚洲综合在线五月天 | 天天干天天操天天射 | 成人久久视频 | 精品一区二区亚洲 | 国产中文字幕亚洲 | 最近日本中文字幕a | 精品国产1区二区 | 亚洲精品视频在线观看视频 | 国产视频二区三区 | 久久综合狠狠综合久久综合88 | 五月综合网 | 亚洲综合在| 久久天堂精品视频 | 91丨九色丨高潮丰满 | 精品视频在线看 | 久久99国产视频 | 91污污| 97精品久久 | 国产精品日韩欧美 | 天天操夜夜叫 | 激情综合六月 | 日韩欧美69 | 在线观看av免费 | av福利免费 | 伊人成人精品 | 日本99干网| 亚洲第一色 | 99久e精品热线免费 99国产精品久久久久久久久久 | www.99av| 综合激情婷婷 | 在线视频成人 | 天天天天天干 | 国产涩涩在线观看 | 国产精品黄色在线观看 | 波多野结衣一区 | 美女视频免费一区二区 | 午夜影视av | 亚洲一区二区三区毛片 | 国产精品每日更新 | 热久久免费视频精品 | 五月天综合在线 | 丝袜美女在线 | 五月网婷婷| 欧美看片 | 91精品国产九九九久久久亚洲 | 午夜成人免费影院 | 97免费公开视频 | 日韩理论电影在线观看 | 91网站在线视频 | 久久午夜色播影院免费高清 | 黄色a视频免费 | 国产精品久久久久久久久搜平片 | 国产中文在线视频 | 黄色特级一级片 | 日韩欧美99|