如何确定网站栏目中铁建设集团有限公司下属公司

news/2025/9/23 17:20:27/文章来源:
如何确定网站栏目,中铁建设集团有限公司下属公司,wordpress版权所有在哪里,网站建设公司推荐金石下拉网络目录 1.说明 2.加密和加签的区别 3.后端加密#xff0c;解密#xff0c;加签及验签示例 4.前端加密#xff0c;解密#xff0c;加签及验签示例 5.前端加密#xff0c;后端解密#xff0c;前端加签#xff0c;后端验签 6.注意事项 1.说明 RSA算法是一种非对称加密…目录 1.说明 2.加密和加签的区别 3.后端加密解密加签及验签示例 4.前端加密解密加签及验签示例 5.前端加密后端解密前端加签后端验签 6.注意事项 1.说明 RSA算法是一种非对称加密算法与对称加密算法不同的是,RSA算法有两个不同的密钥,一个是公钥,一个是私钥。 公钥是公开的可以多人持有私钥是保密的只有自己持有。 加密常用的密钥长度有1024,204830724096。密钥长度越长加密的强度也就越强性能也会越低。可以使用1024或2048位的密码。 2.加密和加签的区别 ①加密是防止信息泄露确保数据传输的安全如前端输入的一些账号密码卡号等敏感信息必须加密后传输。 加签是防止信息被篡改确保是发送方传递的数据。 ②通过公钥进行加密传输然后接收方使用私钥进行解密。 通过私钥进行加签然后接收方使用公钥进行验签。 ③加密是可逆的也就是说加密后的密文可以进行解密。 加签是不可逆的只能通过验签来验明真伪。 ④加密是明文长度是有限制的明文的最大长度密文长度-11单位是字节当设置密钥为1024位时1024/8-11117字节所以明文的最大长度为117个字节解密的最大长度为127个字节相差11个字节是因为加密时使用了填充模式。 加签是没有长度限制的。 3.后端加密解密加签及验签示例 ①引入依赖 dependencygroupIdcommons-codec/groupIdartifactIdcommons-codec/artifactIdversion1.14/version/dependency ②工具类 package com.example.utils;import java.io.ByteArrayOutputStream; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.Signature; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import javax.crypto.Cipher;import org.apache.commons.codec.binary.Base64;/*** Author linaibo* Date 2024/2/17 16:26* Version 1.0*/ public class RsaTool {/*** 16 * RSA最大加密明文大小* 17*/private static final int MAX_ENCRYPT_BLOCK 117;/*** 21 * RSA最大解密密文大小* 22*/private static final int MAX_DECRYPT_BLOCK 128;/*** 26 * 获取密钥对* 27 ** 28 * return 密钥对* 29*/public static KeyPair getKeyPair() throws Exception {KeyPairGenerator generator KeyPairGenerator.getInstance(RSA);generator.initialize(1024);return generator.generateKeyPair();}/*** 37 * 获取私钥* 38 ** 39 * param privateKey 私钥字符串* 40 * return* 41*/public static PrivateKey getPrivateKey(String privateKey) throws Exception {KeyFactory keyFactory KeyFactory.getInstance(RSA);byte[] decodedKey Base64.decodeBase64(privateKey.getBytes());PKCS8EncodedKeySpec keySpec new PKCS8EncodedKeySpec(decodedKey);return keyFactory.generatePrivate(keySpec);}/*** 50 * 获取公钥* 51 ** 52 * param publicKey 公钥字符串* 53 * return* 54*/public static PublicKey getPublicKey(String publicKey) throws Exception {KeyFactory keyFactory KeyFactory.getInstance(RSA);byte[] decodedKey Base64.decodeBase64(publicKey.getBytes());X509EncodedKeySpec keySpec new X509EncodedKeySpec(decodedKey);return keyFactory.generatePublic(keySpec);}/*** 63 * RSA加密* 64 ** 65 * param data 待加密数据* 66 * param publicKey 公钥* 67 * return* 68*/public static String encrypt(String data, PublicKey publicKey) throws Exception {Cipher cipher Cipher.getInstance(RSA);cipher.init(Cipher.ENCRYPT_MODE, publicKey);int inputLen data.getBytes().length;ByteArrayOutputStream out new ByteArrayOutputStream();int offset 0;byte[] cache;int i 0;// 对数据分段加密while (inputLen - offset 0) {if (inputLen - offset MAX_ENCRYPT_BLOCK) {cache cipher.doFinal(data.getBytes(), offset, MAX_ENCRYPT_BLOCK);} else {cache cipher.doFinal(data.getBytes(), offset, inputLen - offset);}out.write(cache, 0, cache.length);i;offset i * MAX_ENCRYPT_BLOCK;}byte[] encryptedData out.toByteArray();out.close();// 获取加密内容使用base64进行编码,并以UTF-8为标准转化成字符串// 加密后的字符串return new String(Base64.encodeBase64String(encryptedData));}/*** 96 * RSA解密* 97 ** 98 * param data 待解密数据* 99 * param privateKey 私钥* 100 * return* 101*/public static String decrypt(String data, PrivateKey privateKey) throws Exception {Cipher cipher Cipher.getInstance(RSA);cipher.init(Cipher.DECRYPT_MODE, privateKey);byte[] dataBytes Base64.decodeBase64(data);int inputLen dataBytes.length;ByteArrayOutputStream out new ByteArrayOutputStream();int offset 0;byte[] cache;int i 0;// 对数据分段解密while (inputLen - offset 0) {if (inputLen - offset MAX_DECRYPT_BLOCK) {cache cipher.doFinal(dataBytes, offset, MAX_DECRYPT_BLOCK);} else {cache cipher.doFinal(dataBytes, offset, inputLen - offset);}out.write(cache, 0, cache.length);i;offset i * MAX_DECRYPT_BLOCK;}byte[] decryptedData out.toByteArray();out.close();// 解密后的内容return new String(decryptedData, UTF-8);}/*** 129 * 签名* 130 ** 131 * param data 待签名数据* 132 * param privateKey 私钥* 133 * return 签名* 134*/public static String sign(String data, PrivateKey privateKey) throws Exception {byte[] keyBytes privateKey.getEncoded();PKCS8EncodedKeySpec keySpec new PKCS8EncodedKeySpec(keyBytes);KeyFactory keyFactory KeyFactory.getInstance(RSA);PrivateKey key keyFactory.generatePrivate(keySpec);// 不同的签名算法Signature signature Signature.getInstance(MD5withRSA);// Signature signature Signature.getInstance(MD2withRSA);// Signature signature Signature.getInstance(SHA1withRSA);// Signature signature Signature.getInstance(SHA224withRSA);// Signature signature Signature.getInstance(SHA256withRSA);// Signature signature Signature.getInstance(SHA384withRSA);// Signature signature Signature.getInstance(SHA512withRSA);signature.initSign(key);signature.update(data.getBytes());return new String(Base64.encodeBase64(signature.sign()));}/*** 147 * 验签* 148 ** 149 * param srcData 原始字符串* 150 * param publicKey 公钥* 151 * param sign 签名* 152 * return 是否验签通过* 153*/public static boolean verify(String srcData, PublicKey publicKey, String sign) throws Exception {byte[] keyBytes publicKey.getEncoded();X509EncodedKeySpec keySpec new X509EncodedKeySpec(keyBytes);KeyFactory keyFactory KeyFactory.getInstance(RSA);PublicKey key keyFactory.generatePublic(keySpec);// 不同的签名算法Signature signature Signature.getInstance(MD5withRSA);// Signature signature Signature.getInstance(MD2withRSA);// Signature signature Signature.getInstance(SHA1withRSA);// Signature signature Signature.getInstance(SHA224withRSA);// Signature signature Signature.getInstance(SHA256withRSA);// Signature signature Signature.getInstance(SHA384withRSA);// Signature signature Signature.getInstance(SHA512withRSA);signature.initVerify(key);signature.update(srcData.getBytes());return signature.verify(Base64.decodeBase64(sign.getBytes()));} }③使用 package com.example.utils;import java.security.KeyPair; import org.apache.commons.codec.binary.Base64;/*** Author linaibo* Date 2024/2/17 16:30* Version 1.0*/ public class TestRsa {public static void main(String[] args) throws Exception {KeyPair keyPair RsaTool.getKeyPair();String privateKey new String(Base64.encodeBase64(keyPair.getPrivate().getEncoded()));String publicKey new String(Base64.encodeBase64(keyPair.getPublic().getEncoded()));System.out.println(公钥 publicKey);System.out.println(私钥 privateKey);String data 需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字;String encrypt RsaTool.encrypt(data, RsaTool.getPublicKey(publicKey));System.out.println(加密后 encrypt);String decrypt RsaTool.decrypt(encrypt, RsaTool.getPrivateKey(privateKey));System.out.println(解密后 decrypt);String sign RsaTool.sign(data, RsaTool.getPrivateKey(privateKey));System.out.println(签名后 sign);boolean verify RsaTool.verify(data, RsaTool.getPublicKey(publicKey), sign);System.out.println(验签结果 verify);} }结果 公钥MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD5Wawf44UliJLXLQ0UUTZXaH1EZv1bHM4nNSV2xVQY2RN8dKLgQ1J71y90vJjusi0rOqfFdni2UU3VtnMdtYOYXbhsV14oFtU3gWYK28KlqOd5rtjjNR2Vv0sPDaZLfdsq6p5BpNjtWApPM9ghXj0S6BM3GWjsftNPM/IwIDAQAB 私钥MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAPlZr7B/jhSWIktctDRRRNldofURm/Vsczic1JXbFVBjZE3x0ouBDUnvXL73S8mO6yLSs6p8V2eLZRTdW2cx21g5hduGxXXigW1T7f6BZgrbwqWo53mu2OM1HZW/Sw8Npn4t92yrr6nkGk2O1YCk8z2CFePRLoEzcZaOx008z8jAgMBAAECgYB0hwA6G1am4rtUyZ36J7XQhWk9JTAzezOwSPr4FWGmtxOPLubLDUsnyrlp6YITL0AKh2Ch9dE8XTMmmHTyQ3qsdjn5gXhxf2WBSNGKdpp9kO/x6NgfcsT71e9luHfhA2eviN9EQWXriOLRECPmvGGwcvRrMJhS3lz/xyFaSUvkQJBAP4hO35zbkF9rTXfX/01RsUlyPBMmBwcpLft6oxjMq2hRmO7GCEpX8qaEdG3ODKDildzbXUjN76cynL61jYlXkCQQD7L3MY2OgPOGSgRhwUKceaBXQVnl2Y5BEhq5HERFRBWfWiJUzsEHoY30SGfvw6jsegM9Crd6faEzaHBMyyV57AkEAhkt3ji5f4JoSk7qUllG2MW7zThGb/JcicNR4s3GkkV79vKxdZwDfT0i2C/Zf60naLLah7FoNFl0M2ZyapVvnOQJBALFcSbpKC6rTMOzlzec3aqSyHIxUZkJESmJTN1HBlZMDziIcKj7hoTra5i9i9YPAaJkotH45gj4OjN1sxHWkCQCT6vx4dt5t92nIwO0Hfwh6wY3qDz66Aq7S3iAda04PqkECh0J30gzEcs2G8l8vkpihnAQtCtRANhkzqfDNu8 加密后8LbPWfiOb2iSah4Roq58mVLujvELI6BhLvOfm/jRCfMhuoEDWzfVpI9RFnPmIr43wQwDtFqCLAIDHpMggI21F4e59fj2/XTviUrUdxb/11qkhw9ovELyhOSh85PNvhSvF7nnn1kytAdT54chKtxgGhd6ZzFs7LZx1qoyGA/ypC9Bl5ZiT4ZECNOR6ZlOK8v5aVfiwZUz9iKso5COF0DFf4rlBSKoteH2muhJWkNCSxLqjOjieCTrWaFqERSFKtnRoCqCAnNXpYn3gSZDilp6n3UhHsW8MPQ0rnUYY0D4JepBXIk6VrDXfRiPKrw4wCVXTDYSsL6RoZ36WUW5Azf3sCKr1PRe5Gw1CtpoAYavKqxr0QD7ShheWxBX1Jbb3uXwr/FOxlJ9GlrTr6ZBhHomz2jEV7pgmBfMvsg7g6hAfinSUk6tM60gw3zJT6Bq0M29MNtI04Cbj0i5aXCPpTKyT1wvVWoZrCvfjPIimQ9RmqmhBAS1/qvETS6K5c 解密后需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字 签名后FgpCHgRZg0AoR747wvDDBbPhYeVUCEJfRaJ3tGVJY3QplddTxprtMHYFQalLK3vVP5Dpo/6bMAzQyu8Y4oaArqtYpoURhPnvr4QXTHfR8MG8PGYc1S11ysAuDPbsb6geAvHRFsspjGJ9oLH2nHBnZzMQ62HGZRzAKING219SY 验签结果true 4.前端加密解密加签及验签示例 前端这块主要采用jsencrypt进行加解密jsrsasign用来生成密钥对、加签验签。 ①引入依赖 // JSEncrypt pnpm i jsencrypt// jsrsasign pnpm i jsrsasign ②加密解密加签及验签工具类  import JSEncrypt from jsencrypt; import JsRsaSign from jsrsasign;/*** RSA加密* param publicKey 公钥* param plainText 明文* returns {*} 密文*/ export function encryptByRSA(publicKey, plainText) {const encryptor new JSEncrypt();encryptor.setPublicKey(publicKey);return encryptor.encrypt(plainText); }/*** RSA解密* param privateKey 私钥* param cipherText 密文* returns {*} 明文*/ export function decryptByRSA(privateKey, cipherText) {const decrypter new JSEncrypt();decrypter.setPrivateKey(privateKey);return decrypter.decrypt(cipherText); }/*** 生成RSA密钥对填充模式为PKCS8。* 更多模式参考a hrefhttps://kjur.github.io/jsrsasign/api/symbols/KEYUTIL.htmlhttps://kjur.github.io/jsrsasign/api/symbols/KEYUTIL.html/a* returns {{privateKey: (string|string|*), publicKey: (string|string|*)}}*/ export function generateRsaKeyWithPKCS8() {const keyPair JsRsaSign.KEYUTIL.generateKeypair(RSA, 1024);const privateKey JsRsaSign.KEYUTIL.getPEM(keyPair.prvKeyObj, PKCS8PRV);const publicKey JsRsaSign.KEYUTIL.getPEM(keyPair.pubKeyObj);return { privateKey, publicKey }; } /*** SHA256和RSA加签* param privateKey 私钥* param msg 加签内容* returns {string} Base64编码签名内容*/ export function signBySHA256WithRSA(privateKey, msg) {const key JsRsaSign.KEYUTIL.getKey(privateKey);const signature new JsRsaSign.KJUR.crypto.Signature({alg: MD5withRSA,// alg: SHA1withRSA,// alg: SHA224withRSA,// alg: SHA256withRSA,// alg: SHA384withRSA,// alg: SHA512withRSA,// alg: RIPEMD160withRSA,});signature.init(key);signature.updateString(msg);// 签名后的为16进制字符串这里转换为16进制字符串return JsRsaSign.hextob64(signature.sign()); }/*** SHA256和RSA验签* param publicKey 公钥必须为标准pem格式。如果是PKCS1格式必须包含-----BEGIN RSA PRIVATE KEY-----如果是PKCS8格式必须包含-----BEGIN PRIVATE KEY-----* param base64SignStr Base64编码签名字符串* param msg 原内容* returns {boolean} 是否验签通过*/ export function verifyBySHA256WithRSA(publicKey, base64SignStr, msg) {const key JsRsaSign.KEYUTIL.getKey(publicKey);const signature new JsRsaSign.KJUR.crypto.Signature({alg: MD5withRSA,// alg: SHA1withRSA,// alg: SHA224withRSA,// alg: SHA256withRSA,// alg: SHA384withRSA,// alg: SHA512withRSA,// alg: RIPEMD160withRSA,});signature.init(key);signature.updateString(msg);// 需要将Base64进制签名字符串转换成16进制字符串return signature.verify(JsRsaSign.b64tohex(base64SignStr)); } ③使用 !-- eslint-disable vue/require-v-for-key -- script setup import Component1 from /components/Component1.vue; import Component2 from /components/Component2.vue; import Component3 from /components/Component3.vue; import {useCountStore} from /store/modules/count/countStore; import {useChannelStore} from /store/modules/channel/channelStore import {ref} from vue; import testStore from ./components/testStore.vue; import {encryptByRSA,decryptByRSA,generateRsaKeyWithPKCS8,signBySHA256WithRSA,verifyBySHA256WithRSA} from /utils/crypto;const {privateKey, publicKey} generateRsaKeyWithPKCS8(); console.log(生成的私钥为\n${privateKey}); console.log(生成的公钥为\n${publicKey});const cipherText encryptByRSA(publicKey, 123456789----------123456789); console.log(test加密后的内容为\n${cipherText});const plainText decryptByRSA(privateKey, cipherText); console.log(解密后的内容为\n${plainText});const signature signBySHA256WithRSA(privateKey, 123456789----------123456789); console.log(生成的签名\n${signature});const isVerified verifyBySHA256WithRSA(publicKey, signature, 123456789----------123456789); console.log(是否验签通过${isVerified});/scripttemplatediv /div /templatestyle scoped /style 数字签名有多种加签及验签使用的数字签名要一致。 结果  5.前端加密后端解密前端加签后端验签 前后端的工具类直接使用上面的即可。加签的数字签名确保前后端的一致。 String pri MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAL03PU6h7DfX0pGb hFak0gAPJVSCOFjy0vXfPefm88wr9gx3aIGqRNyubdtw37jG3jUFb1d/5M5bVB1 YB23cs5FkjmIVwdiUoHgRPCUwDoet6ZpamDSdpLTWqmC4uDb9R8FLRI1Q2h2cMBV TTR6DfFHRLOJFvlrhjuvcZvonAgMBAAECgYBSoWj4ieXqjSm7xLqKS/gZZoPa 3/NThNdz4EXcnBMjup782ricx4rDBLmc9zH8M3yekzl45S/TT2TZmiibUZ2kjVYs ZV3GoVzVbBek9vStDHVlVjGQvUnVbMuoKTpcEs0efjIz3Su0NQsxLyb4KZFMzts H/C4JOBE0kb/cuhhIQJBAPeMvUg61pvR2IfrTiREtiN9uKi0bpSDH5Esq89rET QjC65a209pVoWkdx4HBKIK4KLsaLAI8w9b1fZhPGc0CQQDDrLzM2JFjCpC4g9gx NdFTZmwFaqKrAkKB3tw492PgvLZWbO6HocDWRMYi1RtkBYq7FFzRftIAr7QDxKLz oJ/DAkAX7NRGbNldCfUBfe55duKbn4T/WSEP5ooqkgQjIAw/pPrattWH6luCqSlA inMEp0VtTLLA6DCkrrbGyccvt0VpAkEAuKnXT9bdiKta4T5zY9FqliZjw8QzySF 0XyaBqTqPFi8F5ocDiJIE6658nt9qwpT37Qa2Ja/52fqEjhLtHIc8wJAB1T7XQ1s olFqeE3T9n/3NfbvSw66Act2kYSKrGYtrDMjSBHs7rIN7DWAz/zlCRPQ0EyY9w gcEyHHFoKN2vDA;String pub MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9Nz1Ooew319KRm4RWpNIADyVU gjhY8tL13z3n5vPMK/YMd2iBqkTcrm3bcN4xt41Bfm9XfTOW1QdWAdt3LORZI5 iFcHYlKB4ETwlMA6HremaWpg0naS01qpguLg2/UfBS0SNUNodnDAVU/k0eg/nxR0 SziRb5a4fo7r3Gb6JwIDAQAB;String decrypt1 RsaTool.decrypt(jNlG4S6w4xrq62todeiXJoPoCrQ0WRn1wq2WkKms7bPFkYnYDARebVh8tbSl0OL/FIBE1HytI6jRnzo6CxkdMVPdUh3W1gcAMOLtYEdOOW8g749/vMH6ptBYgG7I02TdRTilCKrWxG1yBUU/2vz73wGes4l2bws87zr7WXh8, RsaTool.getPrivateKey(pri));System.out.println(解密后 decrypt1);boolean verify1 RsaTool.verify(123456789----------123456789, RsaTool.getPublicKey(pub), VECLGuhG59fwhE3ikT2mpO/CTf/9EMXRdL3U308j98jYQLx1WamjMJmBmPF/nf8b6D0Uv2TxmPOnLAw/iFe6f1oC62DFzR77J7agomi8cG0itcxY37WhExv4tkrgxf8DMH9uZ7SoYMTtXoSD4PtJIDxJnvWo5/4QmqtnZfA3d4);System.out.println(验签结果 verify1); 结果 解密后123456789----------123456789 验签结果true 6.注意事项 ①因为加密的明文长度限制所以需要分段进行加密。 ②公钥加密私钥解密私钥加签公钥验签 ③后端RSA的数字签名算法主要有以下两种 MD系列 。主要包括MD2withRSA和MD5withRSA。SHA系列 。主要包括SHA1withRSA、SHA224withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA。 数字签名算法具有安全性、抗否认性的特点它是一种带有密钥公钥、私钥的消息摘要算法用于验证数据完整性、认证数据来源、抗否认等。 ④前后端加签使用的签名算法略有区别可以选择使用前后端都有的数字签名。加签和验签使用的数字签名算法要一致。 参照 RSA加密、解密、签名、验签的原理及方法_rsa解密-CSDN博客 数字签名算法MD5withRSA-CSDN博客 前后端RSA互相加解密、加签验签、密钥对生成(Java)_jsencrypt java-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做家具商城网站东莞网络推广代理

Redis是一种高性能的键值对存储系统,它支持多种类型的数据结构,如字符串、列表、集合、哈希表、有序集合等。Redis提供了两种不同的持久化机制来确保数据的安全性:RDB(Redis Database)和AOF(Append Only Fi…

吉安做网站的公司晋中公司做网站

数据采集与预处理02 :网络爬虫实战 爬虫基本知识 1 HTTP的理解 URL uniform resource locator. 是统一资源定位符,URI identifier是统一资源标识符。几乎所有的URI都是URL。 URL前部一般可以看到是HTTP还是HTTPS, 这是访问资源需要的协议…

phpcms v9企业网站模板:蓝色电子科技公司网站模板wordpress网页折叠效果

请阅读【嵌入式开发学习必备专栏 】 文章目录 shell 命令 basenamedf 命令 shell 命令 basename 在 shell 脚本中,可以使用 basename 命令来获取文件的基本名称(不带路径的部分)。以下是如何将文件名赋值给变量的示例: file_pat…

网站验收指标网页浏览历史记录在哪

目录 1. 两数之和题目描述做题思路参考代码 49.字母异位词分组题目描述做题思路参考代码 128. 最长连续序列题目描述做题思路参考代码 1. 两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数…

网站制作上海湖南专业竞价优化服务

leetcode 98. 验证二叉搜索树 题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是…

详细介绍:基于伪随机数的WPS PIN码逆向原理分析(精灵尘埃/仙尘攻击)

详细介绍:基于伪随机数的WPS PIN码逆向原理分析(精灵尘埃/仙尘攻击)2025-09-23 17:11 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: aut…

52805 JLINK 端口保护机制硬件保护具体流程分析;

硬件保护(Hardware AP-Protect) 通过写特定值(如 Enabled/0x00)到 UICR.APPROTECT 并复位生效。 一旦启用,只有通过 CTRL-AP 执行 ERASEALL(全片擦除,包括 Flash、UICR、RAM)才能解除保护。 这种保护是持久的,…

构建你的 MCP 能力层:.NET 9 + SK 的系统方案

构建你的 MCP 能力层:.NET 9 + SK 的系统方案环境准备与基线项目(.NET 9 + SK + MCP) 目标:搭建最小可运行的 .NET 控制台,引用 SK 与 MCP,完成一次 MCP Ping 健康检查(Stdio 与 SSE/HTTP 各跑通一次),并为后…

网页设计需要什么seo织梦网站建设步骤

在此整理并记录自己的思考过程,其中不乏有一些尚未成熟或者尚未实现的idea,也有一些idea实现之后没有效果或者正在实现,当然也有部分idea已写成论文正在投稿,都是自己的一些碎碎念念的思考,欢迎交流。 研一上学期 9.…

百度联系电话巩义关键词优化推广

视频扩散模型因其能够生成连贯且高保真的视频而日益受到关注。然而,迭代去噪过程使得这类模型计算密集且耗时,限制了其应用范围。香港中文大学 MMLab、Avolution AI、上海人工智能实验室和商汤科技公司的研究团队提出了AnimateLCM,这是一种允…

网站推广业务展会布置

一、位图 1.1 概念 所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。 数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以…

wix做网站的建议做一个公司网站需要多少钱

1.下载eclipseCDT组合包。 2.电脑上安装GCC, G 3.在eclipse上创建一个C project 4. Eclipse CDT功能很强大,安装完虽然可以编译运行c程序,但有个问题,就是找不到c标准库的头文件,无法打开诸如之类的文件,编…

dw做网站怎么加视频网站怎么做百度推广

1.Amazon Certified Cloud Practitioner 转码小白超友好的一门入门级证书,对于之前没有IT或者project经验的同学也可以轻轻松松顺利拿下,含金量很高可以直接标到linkedln的个人介绍里面。 (1)将如何帮助职业生涯 获得此认证可验证对 AWS Cloud、服务和…

会议专属网站平台建设报价单电子政务门户网站建设

1、常用位操作符 1.1、位与& (1)注意:位与符号是一个&,两个&&是逻辑与。 (2)真值表:1&00 1&11 0&00 0&10 (3)从真值表可以看出:位与操作的特点是,只有1和1位于结果为1&…

做策划有帮助的网站二级网站建设规范

简单排序:插入排序、选择排序、 冒泡排序 分治排序:快速排序、归并排序 分配排序:桶排序、基数排序 树状排序:堆排序 其他:计数排序、希尔排序 稳定排序:如果 a 原本在 b 的前面,且 a b&#x…

pl/sql使用

1.下载地址 https://www.allroundautomations.com/try-it-free/ 2.下载instantclient(连接oracle必须) https://www.oracle.com/database/technologies/instant-client/downloads.html 下载完成后,进入plsql=>conf…

PLC中的运动控制 - (二)基本控制指令MC_Power,MC_Stop,MC_Halt

本章介绍PLC中的基本控制指令,包括最基本的启停指令MC_Power和MC_Stop,MC_Halt,并详解MC_Stop何MC_Halt的区别启动指令 MC_Power MC_Power 功能块是运动控制中用于管理轴使能状态的核心指令,其本质是控制PLC与驱动…

WPF Prism PrismApplication OnInitialized()

Install-Package Prism.Wpf; Install-Package Prism.DryIOC; //app.xaml <prism:PrismApplication x:Class="WpfApp38.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"…

公司微网站建设汽车网站建设

深度学习在图像识别中的革命性应用标志着计算机视觉领域的重大进步。以下是深度学习在图像识别方面的一些革命性应用&#xff1a; 1. **卷积神经网络&#xff08;CNN&#xff09;的崭新时代**&#xff1a; - CNN是深度学习在图像识别中的核心技术&#xff0c;通过卷积层、池化…

FOC之电机模型

概述FOC全称磁场定向控制,从该名称可推导出适用电机的几个特点:磁场是主动方 无机械换向 转子是永磁体符合以上特点的有直流无刷电机(BLDC)和永磁同步电机(PMSM)。实际上,这两种电机的总体结构是一样的,区别在于电…