游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

如何设计一个安全对外的接口?加签验签了解一下

  推荐阅读:太强了吧,架构师联手总结17w字的计算机基础知识与操作系统PDF每天2小时,奋战31天,我凭这份PDF拿下腾讯、阿里、京东等offerSpringMVCSpringMyBatis框架搭建校园兼职平台项目免费分享前言
  我们在求职面试中,经常会被问到,如何设计一个安全对外的接口呢?其实可以回答这一点,加签和验签,这将让你的接口更加有安全。接下来,本文将和大家一起来学习加签和验签。从理论到实战,加油哦密码学相关概念加签验签概念为什么需要加签、验签加密算法简介加签验签相关API加签验签代码实现
  明文、密文、密钥、加密、解密明文:指没有经过加密的信息数据。密文:明文被加密算法加密之后,会变成密文,以确保数据安全。密钥:是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。加密:将明文变成密文的过程。解密:将密文还原为明文的过程。对称加密、非对称加密对称加密:加密和解密使用相同密钥的加密算法。非对称加密:非对称加密算法需要两个密钥(公开密钥和私有密钥)。公钥与私钥是成对存在的,如果用公钥对数据进行加密,只有对应的私钥才能解密。
  什么是公钥私钥?公钥与私钥是成对存在的密钥,如果用公钥对数据进行加密,只有用对应的私钥才能解密。其实,公钥就是公开的秘钥,私钥就是要你私自保存好的秘钥。非对称加密算法需要有一对公私钥
  假设你有一个文件,你用字母a加密,只有字母b才能解密;或者你用b加密,只有a才能解密,那么a和b就是一对公私钥。如果密钥a公开,密钥b你就要私自保存好啦,这时候密钥a就是公钥,密钥b就是私钥。相反,如果b公开,a就要保存好,这时候呢,秘钥b就是公钥,秘钥a就是私钥。加签验签概念加签:用Hash函数把原始报文生成报文摘要,然后用私钥对这个摘要进行加密,就得到这个报文对应的数字签名。通常来说呢,请求方会把数字签名和报文原文一并发送给接收方。验签:接收方拿到原始报文和数字签名后,用同一个Hash函数从报文中生成摘要A。另外,用对方提供的公钥对数字签名进行解密,得到摘要B,对比A和B是否相同,就可以得知报文有没有被篡改过。
  为什么需要加签验签
  上小节中,加签和验签我们已经知道概念啦,那么,为什么需要加签和验签呢?有些朋友可能觉得,我们不是用公钥加密,私钥解密就好了嘛?
  接下来呢,举个demo吧。
  假设现在有A公司,要接入C公司的转账系统。在一开始呢,C公司把自己的公钥寄给A公司,自己收藏好私钥。A公司这边的商户,发起转账时,A公司先用C公司的公钥,对请求报文加密,加密报文到达C公司的转账系统时,C公司就用自己的私钥把报文揭开。假设在加密的报文在传输过程中,被中间人Actor获取了,他也郁闷,因为他没有私钥,看着天鹅肉,又吃不了。本来想修改报文,给自己账号转一个亿的,哈哈。这个实现方式看起来是天衣无缝,稳得一匹的。
  但是呢,如果一开始,C公司把公钥发给公司A的时候,就被中间人Actor获取到呢,酱紫就出问题了。
  中间人Actor截取了C的公钥,他把自己的公钥发给了A公司,A误以为这就是C公司的公钥。A在发起转账时,用Actor的公钥,对请求报文加密,加密报文到在传输过程,Actor又截取了,这时候,他用自己的私钥解密,然后修改了报文(给自己转一个亿),再用C的公钥加密,发给C公司,C公司收到报文后,继续用自己的私钥解密。最后是不是A公司的转账账户损失了一个亿呢
  C公司是怎么区分报文是不是来自A呢,还是被中间人修改过呢?为了表明身份和报文真实性,这就需要加签验签啦!
  A公司把自己的公钥也发送给C公司,私钥自己保留着。在发起转账时,先用自己的私钥对请求报文加签,于是得到自己的数字签名。再把数字签名和请求报文一起发送给C公司。C公司收到报文后,拿A的公钥进行验签,如果原始报文和数字签名的摘要内容不一致,那就是报文被篡改啦
  有些朋友可能有疑问,假设A在发自己的公钥给C公司的时候,也被中间人Actor截取了呢。嗯嗯,我们来模拟一波Actor又截取了公钥,看看Actor能干出什么事情来哈哈
  假设Actor截取到A的公钥后,随后也截取了到A发往C的报文。他截取到报文后,第一件想做的事肯定是修改报文内容。但是如果单单修改原始报文是不可以的,因为发过去C公司肯定验签不过啦。但是呢,数字签名似乎解不开,因为消息摘要算法(hash算法)无法逆向解开的,只起验证的作用呢。。。。
  所以呢,公钥与私钥是用来加密与加密的,加签与验签是用来证明身份,以免被篡改的。常见加密相关算法简介消息摘要算法对称加密算法非对称加密算法国密算法消息摘要算法:相同的明文数据经过相同的消息摘要算法会得到相同的密文结果值。数据经过消息摘要算法处理,得到的摘要结果值,是无法还原为处理前的数据的。数据摘要算法也被称为哈希(Hash)算法或散列算法。消息摘要算法一般用于签名验签。
  消息摘要算法主要分三类:MD(MessageDigest,消息摘要算法)、SHA(SecureHashAlgorithm,安全散列算法)和MAC(MessageAuthenticationCode,消息认证码算法)。
  MD家族算法
  MD(MessageDigest,消息摘要算法)家族,包括MD2,MD4,MD5。MD2,MD4,MD5计算的结果都是是一个128位(即16字节)的散列值,用于确保信息传输完整一致。MD2的算法较慢但相对安全,MD4速度很快,但安全性下降,MD5则比MD4更安全、速度更快。MD5被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。MD5,可以被攻破,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA2。2004年,证实MD5算法无法防止碰撞攻击,因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
  举个例子,看看如何获取字符串的MD5值吧:publicclassMD5Test{publicstaticvoidmain(String〔〕args)throwsUnsupportedEncodingException{Strings123;byte〔〕resultgetMD5Bytes(s。getBytes());StringBuilderstringBuildernewStringBuilder();for(bytetemp:result){if(temp0temp16){stringBuilder。append(0);}stringBuilder。append(Integer。toHexString(temp0xff));}System。out。println(s,MD5加密后:stringBuilder。toString());}privatestaticbyte〔〕getMD5Bytes(byte〔〕content){try{MessageDigestmd5MessageDigest。getInstance(MD5);returnmd5。digest(content);}catch(NoSuchAlgorithmExceptione){thrownewRuntimeException(e);}}}
  运行结果:123,MD5加密后:202cb962ac59075b964b07152d234b70ShA家族算法
  SHA(SecureHashAlgorithm,安全散列算法),包括SHA0、SHA1、SHA2(SHA256,SHA512,SHA224,SHA384等)、SHA3。它是在MD算法基础上实现的,与MD算法区别在于摘要长度,SHA算法的摘要长度更长,安全性更高。
  SHA0发布之后很快就被NSA撤回,因为含有会降低密码安全性的错误,它是SHA1的前身。SHA1在许多安全协议中广为使用,包括TLS、GnuPG、SSH、SMIME和IPsec,是MD5的后继者。SHA2包括SHA224、SHA256、SHA384、SHA512、SHA512224、SHA512256。它的算法跟SHA1基本上相似,目前还没有出现明显弱点。SHA3是2015年正式发布,由于对MD5出现成功的攻破,以及对SHA0和SHA1出现理论上攻破的方法,SHA3应运而生。它与之前算法不同的是,它是可替换的加密散列算法。
  SHA1、SHA2(SHA256,SHA512,SHA224,SHA384)等算法是比较常用的,我们来看看跟MD5的对比吧
  MAC算法家族
  MAC算法MAC(MessageAuthenticationCode,消息认证码算法),是带密钥的Hash函数。输入密钥和消息,输出一个消息摘要。它集合了MD和SHA两大系列消息摘要算法。MD系列算法:HmacMD2、HmacMD4和HmacMD5;SHA系列算法:HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384和HmacSHA512。对称加密算法
  加密和解密使用相同密钥的加密算法就是对称加密算法。常见的对称加密算法有AES、3DES、DES、RC5、RC6等。
  DES
  数据加密标准(英语:DataEncryptionStandard,缩写为DES)是一种对称密钥加密块密码算法。DES算法的入口参数有三个:Key、Data、Mode。Key:7个字节共56位,是DES算法的工作密钥;Data:8个字节64位,是要被加密或被解密的数据;Mode:加密或解密。3DES
  三重数据加密算法(英语:TripleDataEncryptionAlgorithm,又称3DES(TripleDES),是一种对称密钥加密块密码,相当于是对每个数据块应用三次数据加密标准(DES)算法。AES
  AES,高级加密标准(英语:AdvancedEncryptionStandard),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。采用对称分组密码体制,密钥长度为128位、192位、256位,分组长度128位相对于DES,AES具有更好的安全性、效率和灵活性。非对称加密算法
  非对称加密算法需要两个密钥:公钥和私钥。公钥与私钥是成对存在的,如果用公钥对数据进行加密,只有用对应的私钥才能解密。主要的非对称加密算法有:RSA、Elgamal、DSA、DH、ECC。
  RSA算法RSA加密算法是一种非对称加密算法,广泛应用于加密和数字签名RSA算法原理:两个大素数的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA是被研究得最广泛的公钥算法,从提出到现在,经历了各种攻击的考验,普遍认为是目前最优秀的公钥方案之一。DSADSA(DigitalSignatureAlgorithm,数字签名算法),也是一种非对称加密算法。DSA和RSA区别在,DSA仅用于数字签名,不能用于数据加密解密。其安全性和RSA相当,但其性能要比RSA好。ECC算法ECC(EllipticCurvesCryptography,椭圆曲线密码编码学),基于椭圆曲线加密。Ecc主要优势是,在某些情况下,它比其他的方法使用更小的密钥,比如RSA加密算法,提供相当的或更高等级的安全级别。它的一个缺点是,加密和解密操作的实现比其他机制时间长(相比RSA算法,该算法对CPU消耗严重)。国密算法
  国密即国家密码局认定的国产密码算法。为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,即SM1,SM2,SM3,SM4等国密算法。
  SM1SM1,为对称加密算法,加密强度为128位,基于硬件实现。SM1的加密强度和性能,与AES相当。SM2SM2主要包括三部分:签名算法、密钥交换算法、加密算法SM2用于替换RSA加密算法,基于ECC,效率较低。SM3SM3,即国产消息摘要算法。适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成。SM4SM4是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。它的功能类似国际算法的DES。加签验签相关Java的API
  这个小节先介绍一下加签验签需要用到的API吧
  加签相关APIjava。security。Signature。getInstance(Stringalgorithm);根据对应算法,初始化签名对象KeyFactory。getInstance(Stringalgorithm);根据对应算法,生成KeyFactory对象KeyFactory。generatePrivate(KeySpeckeySpec);生成私钥java。security。Signature。initSign(PrivateKeyprivateKey)由私钥,初始化加签对象java。security。Signature。update(byte〔〕data)把原始报文更新到加签对象java。security。Signature。sign();加签
  Signature。getInstance(Stringalgorithm);根据对应算法,初始化签名对象algorithm参数可以取SHA256WithRSA或者MD5WithRSA等参数,SHA256WithRSA表示生成摘要用的是SHA256算法,签名加签用的是RSA算法
  KeyFactory。getInstance(Stringalgorithm);根据对应算法,生成KeyFactory对象,比如你的公私钥用的是RSA算法,那么就传入RSA
  KeyFactory。generatePrivate(KeySpeckeySpec)生成私钥,加签用的是私钥哈,所以需要通过KeyFactory先构造一个私钥对象。
  Signature。initSign(PrivateKeyprivateKey)加签用的是私钥,所以传入私钥,初始化加签对象
  Signature。update(byte〔〕data)把原始报文更新到加签对象
  java。security。Signature。sign();进行加签操作验签相关APIjava。security。Signature。getInstance(Stringalgorithm);根据对应算法,初始化签名对象KeyFactory。getInstance(Stringalgorithm);根据对应算法,生成KeyFactory对象KeyFactory。generatePublic(KeySpeckeySpec);生成公钥java。security。Signature。initVerify(publicKey);由公钥,初始化验签对象java。security。Signature。update(byte〔〕data)把原始报文更新到验签对象java。security。Signature。verify(byte〔〕signature);验签
  Signature。getInstance(Stringalgorithm)根据对应算法,初始化签名对象,注意验签和加签是需要用相同的algorithm算法参数哦
  KeyFactory。getInstance(Stringalgorithm);根据对应算法,生成KeyFactory对象
  KeyFactory。generatePublic(KeySpeckeySpec);生成公钥,验签用的是公钥,通过KeyFactory先构造一个公钥对象
  Signature。initVerify(publicKey);公钥验签,所以传入公钥对象参数,初始化验签对象
  Signature。update(byte〔〕data)把原始报文更新到加签对象
  Signature。verify(byte〔〕signature);进行验签操作加签验签代码实现
  前几个小节讨论完概念,是时候上代码实战了,我这边用的是SHA256作为摘要算法,RSA作为签名验签算法,如下:packagepattern;importsun。misc。BASE64Decoder;importsun。misc。BASE64Encoder;importjava。io。IOException;importjava。io。UnsupportedEncodingException;importjava。security。;importjava。security。spec。InvalidKeySpecException;importjava。security。spec。PKCS8EncodedKeySpec;加签验签demoAuthor捡田螺的小男孩publicclassSignatureTest{公钥字符串privatestaticfinalStringPUBLICKEYSTRMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaJzVjC5K6kbS2YE2fiDs6H8pBJFDGEYqqJJC9I3E0Ebr5FsofdImV5eWdBSeADwcR9ppNbpORdZmcX6SipogKx9PX5aAO4GPesroVeOs91xrLEGtarteW8iSDZaGDUVV3wcEdcieCvFlc5PUuZJouM2XZaDK4Fg2IRTfDXQIDAQAB;私钥字符串privatestaticfinalStringPRIVATEKEYSTRMIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBANonNWMLkrqRtLZgTZIOzofykEkUMYRiqokkL0jcTQRuvkWyh90iZXl5Z0FJ4APBxH2mk1uk5F1mZxfpKKmiArH09floA7gY96yuhV46z3XGssQa39qu15byJIP5loYNRVXf7BwR1yL94K8WVzk9S5kmi4zZdloMrgWDYhFN8NdAgMBAAECgYA9bz1Bn0i68b2KfqRdgOfsnbe0XNN1DLQp2t7WDfRCg01iI1zPkZgyFVZWtI85f5uIrLs5ArLosL1oNuqqc0nNneCvJKZxvA98Hx3ZqYTzDnleR054YhofL5awbhSciYVic204DOG1rhSsYWMqtX7J73geoWL7TYdMfYXcCAQJBAPMMKsz6ZJh98EeQ1tDG5gpAGWFQkYNrxZDelPLjeO0TP3XkQnIpcaZoCs7VrRGRGMWwQ2BUdc01in89ZZ5ECQQDlx2oBc1CtOAm2UAhN1xWrPkZWENQ53wTrwXO4qbTGDfBKon0AehLlGCSqxQ71aufLkNO7ZlX0IHTAlnk1TvENAkAGSEQ69CXxgxY2beTwfBkR2gghKg0QJUUkyLqBlMz3ZGAXJwTE1sqrnHiuSAiGhwH0ByNuuEotO1sPGukrhAkAMK26a2wnzPLuhkrwKPykGRZ1zGHCz19AYNKzFXJGgclCqiMydY5T1knBDYUEbjUW1Mmyn1FvrciHoUG1AkAEMEIuDauzJabEAU08YmZw6OoDGsukRWaPfjOEiVhH88p00veM1R37nwhoDMGyEGXVeVzNPvk7cELg28MSRzCK;publicstaticvoidmain(String〔〕args)throwsSignatureException,NoSuchAlgorithmException,InvalidKeyException,IOException,InvalidKeySpecException{原始报文Stringplain欢迎大家关注我的公众号,捡田螺的小男孩;加签byte〔〕signatureBytesign(plain);System。out。println(原始报文是:plain);System。out。println(加签结果:);System。out。println(newBASE64Encoder()。encode(signatureByte));验签booleanverifyResultverify(plain,signatureByte);System。out。println(验签结果:verifyResult);}加签方法paramplainreturnthrowsNoSuchAlgorithmExceptionthrowsInvalidKeyExceptionthrowsUnsupportedEncodingExceptionthrowsSignatureExceptionprivatestaticbyte〔〕sign(Stringplain)throwsNoSuchAlgorithmException,InvalidKeyException,UnsupportedEncodingException,SignatureException{根据对应算法,获取签名对象实例SignaturesignatureSignature。getInstance(SHA256WithRSA);获取私钥,加签用的是私钥,私钥一般是在配置文件里面读的,这里为了演示方便,根据私钥字符串生成私钥对象PrivateKeyprivateKeygetPriveteKey(PRIVATEKEYSTR);初始化签名对象signature。initSign(privateKey);把原始报文更新到对象signature。update(plain。getBytes(UTF8));加签returnsignature。sign();}验签方法paramplainparamsignatureBytereturnthrowsNoSuchAlgorithmExceptionthrowsInvalidKeyExceptionthrowsIOExceptionthrowsSignatureExceptionthrowsInvalidKeySpecExceptionprivatestaticbooleanverify(Stringplain,byte〔〕signatureByte)throwsNoSuchAlgorithmException,InvalidKeyException,IOException,SignatureException,InvalidKeySpecException{获取公钥PublicKeypublicKeygetPublicKey(PUBLICKEYSTR);根据对应算法,获取签名对象实例SignaturesignatureSignature。getInstance(SHA256WithRSA);初始化签名对象signature。initVerify(publicKey);把原始报文更新到签名对象signature。update(plain。getBytes(UTF8));进行验签returnsignature。verify(signatureByte);}privatestaticPublicKeygetPublicKey(StringpublicKeyStr)throwsInvalidKeySpecException,IOException{PublicKeypublicKeynull;try{java。security。spec。X509EncodedKeySpecbobPubKeySpecnewjava。security。spec。X509EncodedKeySpec(newBASE64Decoder()。decodeBuffer(publicKeyStr));RSA对称加密算法java。security。KeyFactorykeyFactory;keyFactoryjava。security。KeyFactory。getInstance(RSA);生成公钥对象publicKeykeyFactory。generatePublic(bobPubKeySpec);}catch(NoSuchAlgorithmExceptione){e。printStackTrace();}returnpublicKey;}privatestaticPrivateKeygetPriveteKey(StringprivateKeyStr){PrivateKeyprivateKeynull;PKCS8EncodedKeySpecpriPKCS8;try{priPKCS8newPKCS8EncodedKeySpec(newBASE64Decoder()。decodeBuffer(privateKeyStr));KeyFactorykeyfKeyFactory。getInstance(RSA);privateKeykeyf。generatePrivate(priPKCS8);}catch(IOExceptionNoSuchAlgorithmExceptionInvalidKeySpecExceptione){e。printStackTrace();}returnprivateKey;}}
  运行结果:加签结果:Oz15aybGe42eGHbciMoSYHSCc8tfRskTVjjGSTPD4HjadL0CC5JUWNUW0WxHjUb4MvxWo2oeWEQw0m61dJgBMtoTWcVDcgwLAbObsbWdQ6EfVRqG13clkE8MyKsjt9Z7tcbwpycYTv0rUR4corndAVfBdtv5KeVOXqM验签结果:true
  作者:Jayhuaxiao
  链接:https:juejin。impost5f13474c5188252e677bcbbf

斗鱼虎牙合并尘埃落定,游戏直播进入战争2。0在传了很长一段时间绯闻后,斗鱼虎牙的合并终于尘埃落定。8月10日晚,据外媒报道,斗鱼已经收到了来自腾讯控股的一份初步的、不具约束力的建议书:建议斗鱼和虎牙进行换股合并。……了不起的d小姐定档,了不起的d小姐剧情介绍年代剧《了不起的d小姐》把2022年3月18日做为定档时间,所给观众带来地下工作者林默生和丁易青等人在经历过抗战爆发,加上太平洋战争爆发,后期他们需要隐藏战线,并逐渐把自己理想……雪中悍刀行鱼幼薇结局是什么及谁演的古装剧《雪中悍刀行》给带来鱼幼薇为鱼幼薇,还是职业养猫业余舞剑的女刺客,不过她容颜特别美丽,并拥有蒲柳之姿,经常拥有蒲柳之姿白猫,也没有个性,更不会武功,最后嘉泽扮演的鱼幼薇和……玛丽黛佳携手开心麻花,电影李茶的姑妈国庆档爆笑来袭!开心麻花爆笑喜剧电影《李茶的姑妈》将于9月30日全国上映,承包你的国庆笑点。对于开心麻花的印象和他的名字一样,简直就是快乐源泉。从2015年开始,他们带来了一部又一部爆款……王牌部队张飞牺牲了吗,王牌部队张飞谁演的当代剧《王牌部队》提前进行铺垫张飞发展事情,不过他为救顾一野所牺牲了,且他在临死前将家人托付给顾一野,由此觉得孙逊演的张飞角色特别精彩,还把牺牲后要安排事情给讲明白。1王……王牌部队郑源为什么隐退了,王牌部队郑源是谁演的电视剧《王牌部队》进行比较早铺垫好郑源隐退的情节,毕竟郑源是二三四师师长,且做为二三四师师长,后期希望孩子寻找一个好人出嫁过生活,而李幼斌把郑源角色出演十分到位。1王牌部……王牌部队秦汉勇和谁在一起了,王牌部队秦汉勇是谁演的军旅剧《王牌部队》提前铺设好秦汉勇和赵红樱在一起的情节,不过随着剧情发展给观众展现,逐渐展现出傅浤鸣表演秦汉勇给带来勇实干担当和重情重义的态度给展现,来让观众觉得欣赏很精彩。……HELLOKITTY2020春夏时装秀,蝴蝶结包包蝴蝶结翅膀时尚前沿每一个女生的心里都装着一只放不下的HELLOKITTY,这绝对是少女情怀的代表,粉粉嫩嫩、圆圆的脸蛋,左耳上萌萌的蝴蝶结,没有嘴巴,简直甜到心里……读书笔记之狼一屠晚归,担中肉尽,止有剩骨。途中两狼,缀(zhu)行甚远。屠惧,投以骨。一狼得骨止,一狼仍从。复投之,后狼止而前狼又至。骨已尽矣。而两狼之并驱如故。(如果屠夫剩余的骨头够多,……王牌部队阿秀第几集出现,王牌部队阿秀是谁演王牌部队说出很多人不清楚,可王牌部队剧中阿秀会在第几集出现,很多网友就想去了解一下有关的故事,看王牌部队提前把阿秀出现做好铺垫,过后突然露面给观众带来精彩的表演,但有的网友就不……springcloudfeign实现原理,如何实现负载均衡?首先说明一下,feign只是一个声明式的Http客户端,提供以声明式的方式定义Http调用。本身并没有实现负载均衡,负载均衡是ribbon实现的,feign只是使用而已。……2021北京软件和信息技术服务综合实力企业(六十一)大唐移动发布日期:20220406来源:北京软件和信息服务业协会企业简介大唐移动通信设备有限公司(以下简称大唐移动)成立于2002年2月8日,注册资金150113。0586……
纵欲,正在榨干4亿中国年轻人真正拉开人与人之间差距的,就是可支配的时间里,你所做的事。如果我们甘愿沦为碎片化娱乐的俘虏,让无节制的感官享受淹没自己,就离废掉不远了。人平均一生的寿命是78年。睡觉占据……氢燃料电池能否在汽车中复兴,威胁电池技术?现代Nexo燃料电池车氢能源技术的狂热者说,氢燃料电池汽车最终可以超越电池驱动的汽车,因为它们能够为友好环境的运输提供几乎无限的绿色能源,但首先要克服一些巨大的障碍。……实例见证一个月实现亚马逊店铺销量倍增一个月实现店铺销量倍增,可能吗?如果没有实例证明,有多少觉得会是真的?先看实例:学员:贾总行业:文具站点:北美站运营时间:6个月培训课程:高……特斯拉的电池日就是其他车企的毁灭日?本文完整翻译自teslarati。com,作者RandellSuba,原文地址https:www。teslarati。comteslabatterydaydoomsdayleg……aampampamps视频监控品牌调查中国品牌全面占优IP摄像机是视频监控系统的核心,为了更好地了解市场,asmag。com进行了一项调查,让读者从三个维度(低照度、全景、网络安全)中选出他们最认可的三个IP相机品牌。调查结果显示……喷漆球形焊接立柱A喷漆球形焊接立柱A喷漆球形焊接立柱喷漆球形焊接立柱A喷漆球形焊接立柱A喷漆球形焊接立柱安平县凯林钢格板厂球节点栏杆又称球接点围栏、钢结构平台扶手、平台围栏、球接栏杆扶手等,具有美观新颖,安装方便,坚……新能源汽车充一次电要多少钱?现在买车的人是越来越多了,而且很多地方对购置新能源汽车都有一定的补贴,所以在汽车市场,新能源汽车的关注度也越来越高。相比于燃油车,新能源汽车有低碳环保的先天优势,但唯一存在的短……恐怖片糖果人2021影评该片为何能拿票房冠军?如果说投资一个亿的《失控玩家》夺冠是正常操作,那么投资2500万的《糖果人》登顶就称得上惊艳了。该片夺冠几乎在预料之中,因为即便按照业界预期的1500万成绩照样能拿冠军,让人惊……Flink基础(二)之DS简介(2)Flink简介1初识FlinkFlink项目的理念是:ApacheFlink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架。ApacheFlink是一个……真HIFI无线兴戈APT7评测近年来真无线耳机可谓爆棚式增长,市面上数不尽的新品让人眼花缭乱,国内也踊跃出不少新晋的实力派HIFI品牌。兴戈算是为数不多一直致力于有线HIFI耳机的国产品牌,特立独行的品牌调……千元内运动新声代索尼WFXB700评测每当谈论真无线蓝牙耳机时,索尼总能带给我们无数的话题。索尼在真无线领域发展之迅速,其丰富的产品线以及细数不完的TWS产品便是最好的说明,不论是旗舰级还是入门级,索尼真无线蓝牙耳……蒙古国加入亚太贸易圈,我国机械产品等商品可降税24。2据华富康供应链了解,官方消息显示,《亚太贸易协定》秘书处向各成员国发布通知,蒙古国已经完成所有程序,意味着蒙古国正式加了入《亚太贸易协定》,并计划在明年1月1日与中国、印度、韩……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网