从零玩转前后端加解密之SM2-sm2

title: 从零玩转前后端加解密之SM2
date: 2022-08-21 19:42:00.907
updated: 2023-03-30 13:28:48.866
url: http://www.yby6.com/archives/sm2
categories: 
- 加密算法
- 从零玩转系列
tags: 
- 加密算法
- sm2

前言

SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。

SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。

随着密码技术和计算机技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法。

SM2算法和RSA算法比较

SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小
详细参考: http://www.ecaa.org.cn/667.html

SM2 RSA
算法结构 基本椭圆曲线(ECC) 基于特殊的可逆模幂运算
计算复杂度 完全指数级 亚指数级
存储空间 192-256bit 2048-4096bit
秘钥生成速度 较RSA算法快百倍以上
解密加密速度 较快 一般
加密长度限制 117

后端代码实现

添加 sm2 依赖

<dependency>
    <groupId>com.antherd</groupId>
    <artifactId>sm-crypto</artifactId>
    <version>0.3.2</version>
</dependency>

获取密钥对


    @org.junit.Test
    public void generateKeyPairHex (){
      // 生成出来的密钥可无缝衔接 前端 js 加解密
        Keypair keypair = Sm2.generateKeyPairHex();
        String privateKey = keypair.getPrivateKey(); // 公钥
        String publicKey = keypair.getPublicKey(); // 私钥

        System.out.println(privateKey);
        System.out.println(publicKey);

        System.out.println("========================");
}

 @org.junit.Test
    public void t2 () {
        Keypair keypair = Sm2.generateKeyPairHex();
        String privateKey = keypair.getPrivateKey(); // 公钥
        String publicKey = keypair.getPublicKey(); // 私钥
        System.out.println(privateKey);
        System.out.println(publicKey);
        System.out.println("========================");
        // cipherMode 1 - C1C3C2,0 - C1C2C3,默认为1
        // 使用公钥加密
        final String doEncrypt = Sm2.doEncrypt("http://yby6.com,http://yangbuyi.top", publicKey);
        System.out.println("加密: \n" + doEncrypt);
        // 私钥解密
        final String s = Sm2.doDecrypt(doEncrypt, privateKey);
        System.out.println("解密:\n" + s);
    }

image-1661078949316

签名验签、获取椭圆曲线点
更多加密方式参考: http://github.com/JuneAndGreen/sm-crypto#readme

前端代码实现 - vue

安装依赖

npm install --save sm-crypto

获取密钥对

const sm2 = require('sm-crypto').sm2
let keypair = sm2.generateKeyPairHex()
publicKey = keypair.publicKey // 公钥
privateKey = keypair.privateKey // 私钥

// 自定义随机数,参数会直接透传给 jsbn 库的 BigInteger 构造器
// 注意:开发者使用自定义随机数,需要自行确保传入的随机数符合密码学安全
let keypair2 = sm2.generateKeyPairHex('123123123123123')
let keypair3 = sm2.generateKeyPairHex(256, SecureRandom)
let verifyResult = sm2.verifyPublicKey(publicKey) // 验证公钥

加密解密


// 这里使用Java生成的密钥
// 后端生成密钥
const privateKey = 'a7a9846bbb015f8192bae355be4013d7b7b2bdcf56033b990d58bb5a7541f518'
const publicKey = '048ff6380b4db5c9fc9d80fc5e30bde049c12222c56b9085aa1f1c0b53cabd09e72dc5690110e5b57fc3ff88111d0d161723bcb6365c33cef70d3dbbdf32c7038f'


const sm2 = require('sm-crypto').sm2
const cipherMode = 1 // 1 - C1C3C2,0 - C1C2C3,默认为1
let encryptData = sm2.doEncrypt(msgString, publicKey, cipherMode) // 加密结果
let decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode) // 解密结果
// 指定输出类型
// encryptData = sm2.doEncrypt(msgArray, publicKey, cipherMode) // 加密结果,输入数组
// decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode, {output: 'array'}) // 解密结果,输出数组

前端代码

image-1661080078970

页面查看

image-1661080196004

最终封装


/**
 * 前端加密
 * @param text
 * @returns {*}
 */
export function encrypt(text) {
  return sm2.doEncrypt(text, publicKey, 1) // 加密结果
}

/**
 * 前端解密
 * @param text
 * @returns {*}
 */
export function decrypt(text) {
  return sm2.doDecrypt(text, privateKey, 1) // 加密结果
}

你的压力来源于无法自律,只是假装努力,现状跟不上内心欲望,所以你焦虑又恐慌。——杨不易
本文转载于网络 如有侵权请联系删除

相关文章

  • docker命令实战

    1.docker简介docker镜像:由各种文件和元数据(环境变量、端口映射…)组成docker容器:是镜像的运行实例,可以在基础镜像上做增删改查等docker分层:每一次对原始镜像的修改都会形成新的一层,一层层的叠加,多个不同的容器实例可以共享原始镜像,并在磁盘记录新的修改,即采用写时复制的技术,可以节省磁盘空间docker基本架构如下图2.dockerhubdockerhub是docker官方维护的一个公共仓库把本地镜像上传到dockerhub,比如我想把本地的centos镜像上传到dockerhub首先在本地登录dockerhub,可以用命令dockerlogin,看到LoginSucceeded表示登录成功,可以使用dockerlogout退出登录MacBook-Pro-2~%dockerlogin-u564445#564445是我的dockerid Password: LoginSucceeded Logginginwithyourpasswordgrantsyourterminalcompleteaccesstoyouraccount. Forbettersecurity

  • 【Python系列】4. 流程控制的三种结构

    今日分享:【Python系列】4.程控制的三种结构流程控制的三种结构:一、顺序结构:从上到下,从左到右(默认)二、选择结构:if结构 三、循环结构:for循环,while循环Python中语法说明:python中不使用大括号{},来表示一个代码块。使用缩进来表示代码块,缩进的空格数是可变的。同一个代码块的语句必须包含相同的缩进空格数语句后面不加分号 选择结构—if结构(python中没有switch) if选择分成四种 1、单分支 语法: if(条件): 语句复制2、双分支语法:if(条件): 语句 else: 语句复制3、多分支elif可以有多个,else可以省略,特点:其中有一个满足其它的判断就不用执行 注:多个if,与elif的区别语法:if(条件): 语句 elif(条件): 语句 elif(条件2): 语句 else: 语句复制4、嵌套if 语法:if(条件): if(条件): 语句 else: 语句 else: if(条件): 语句复制循环结构—(python中没有do...while) python中只有两种循环,while与for...in while循环 语法:whi

  • 如何在Debian 9上安装Jenkins

    Jenkins是一个开源可扩展自动化服务器,可用作简单的CI服务器(持续集成)或CD集线器(持续交付)。在本教程中,我们将向您展示如何在运行Debian9作为操作系统的LinuxVPS上安装Jenkins。条件要在服务器上运行Jenkins,您需要安装Java。如果您没有安装Java,可以查看我们的教程,了解如何在Debian9上安装Java。此外,您还需要具有sudo权限的服务器或系统用户的root访问权限。Jenkins可用于自动执行各种任务,从构建和测试到开发和部署软件。它的功能可以扩展到数百个插件,同时您可以通过其Web界面进行配置。Jenkins运行在不同的平台和操作系统上。在Debian9VPS上,可以通过apt包管理器轻松安装。在Debian9VPS上安装Jenkins要在运行Debian9作为操作系统的服务器上安装Jenkins,您需要具有root访问权限。如果您具有服务器的root访问权限,则应通过SSH连接到服务器,并使用以下命令将已安装的软件更新到最新版本:apt-getupdate apt-getupgrade这将更新软件包索引,并将软件更新为可用的最新版本。接

  • SAP PP初阶工单里的Backflush组件

    SAPPP初阶工单里的Backflush组件1,什么是Backflush(倒冲)?倒冲是在确认时对生产消耗的材料进行自动核算(货物出库-261mvt)。例如,当一辆四轮汽车从装配线推出时,四个车轮和轮胎被视为已消耗,并通过系统反冲的方式自动下发到生产订单。Backflushingisautomaticaccounting(Goodsissues-261mvt)ofmaterialconsumedforproduction,atthetimeofconfirmation.Eg.Whena4wheelerautomobileisrolledoutfromassyline,4wheels&Tyresaredeemedtobeconsumedandissuedtoproductionorderautomaticallybywayofbackflushingbythesystem.倒冲是一种会计方法,在Just-in-time(JIT)环境中使用,在这种环境中,成本计算会延迟到货物完工。这种方法有助于消除所有在制品账户,并在各个生产阶段手动分配产品成本。Backflushisanacco

  • Make Dev Great Again——GitHub 热点速览 Vol.46

    作者:HelloGitHub-小鱼干网络不通怎么办?Ping就是你的调试大招,而gping则是Ping的内功,终端可视化显示Ping结果,一眼看明数据接收情况。前端调试大招又是什么呢?Faker.js!这个包罗万象的模拟数据工具让你浏览器调试、Node.js开发如虎添翼,各种模拟数据全都有。微软本周也放了个大招,微软云Azure开源了24节课的前端课程Web-Dev-For-Beginners。除了前端,微软的机器学习大招也CD完毕,Bringing-Old-Photos-Back-to-Life秒变旧照为新片…以下内容摘录自微博@HelloGitHub的GitHubTrending及HackerNews热帖(简称HN热帖),选项标准:新发布|实用|有趣,根据项目release时间分类,发布时间不超过7day的项目会标注New,无该标志则说明项目release超过一周。由于本文篇幅有限,还有部分项目未能在本文展示,望周知?1.本周特推1.1JSON数据检索:gron本周star增长数:550+gron一款可以检索JSON数据的工具,gron不仅可以将目标JSON数据进行离散化拆分,并能

  • Python入门系列第二章--第四节:运算符(一)

    零、算术运算符顾名思义,算术运算符就是用来进行算数运算的一些符号。那么算术运算符包含哪些呢?除了有我们常用的加、减、乘、除外,还有取模、幂、取整除,这些运算符的解释详解见下表。一、比较运算符比较运算符是指可以使用特定的运算符比较两个值。当用运算符比较两个值时,结果是一个逻辑值,不是TRUE(成立)就是FALSE(不成立)的运算符号。比较运算符包括大于、小于、等于、不等于、大于等于、小于等于,解释详见下表。二、赋值运算符赋值运算符是将运算符右边的表达式的值赋给运算符左边的变量。运算符解释详见下表。三、逻辑运算符逻辑运算符把简单的语句连接成更复杂的复杂语句,逻辑运算符包括:and、not、or,详解见下表。注意:0==False的返回值时True,因为在Python中0就代表False,其他数值代表True,所以以下代码是可以执行成功的。 a=1b=2a+banda-b#返回值为-1a-aandb-a#返回值为0a-aorb-a#返回值为1四、小结本节讲解了Python运算符的第一部分,算数运算符、比较运算符、赋值运算符、逻辑运算符,这三种运算符是开发中经常用到的,请大家务必记牢。

  • 利用EasySwoole和layuiAdmin实现后台权限管理系统

    EasySwoole和layuiAdmin前后端分离的后台权限管理系统废话不多说,效果图如下登录页面系统首页用户列表页菜单列表页角色列表页权限分配页介绍EasySwoole是一款基于SwooleServer开发的常驻内存型的分布式PHP框架,专为API而生,摆脱传统PHP运行模式在进程唤起和文件加载上带来的性能损失。EasySwoole高度封装了SwooleServer而依旧维持SwooleServer原有特性,支持同时混合监听HTTP、自定义TCP、UDP协议,让开发者以最低的学习成本和精力编写出多进程,可异步,高可用的应用服务 此后台利用EasySwoole组件如:mysqli协程连接池、SPL库、验证码、注解控制器、fast-cache缓存、Policy权限策略等组件编写而成 后台前端框架使用的是EasyWeb框架,一款基于Layui的后台敏捷开发框架,但是经过魔改之后的框架(但是框架不开源) 由于前端框架不是开源框架,所以这个后台系统没办法放到GitHub上面开源,但如果大家有想要学习的,可以私聊我要到源码学习,如果觉得有帮助的话,可以在我的GitHub上面给一个小星星。Git

  • py+selenium 自动判断页面是否报错并显示在自动化测试报告【原创】

    有需求就会去研究解决的路子。现在需求就是,测试报告报错信息一堆,但却无法肉眼看出是什么问题,你只能知道定位不到元素或是超时,但你却不知道其实进入页面就报错了或是提交表单就报错了!也就是看到报错,需要进一步去手工实际操作看看到底为啥定位不到元素或是为啥超时了。  这就是平常比较抓头的测试报告图。最近我就想写个方法,判断页面报错,显示在测试报告里,减少手工的检验,其实也很简单。#测试进入页面是否报错 defhttpcode(self,link): self.driver.switch_to.parent_frame() self.driver.switch_to.frame("fraLeftFrame") #拼接当前访问的url #href=self.driver.find_element_by_link_text(link).get_attribute('href') href=self.driver.find_element_by_xpath("//a[text()='%s']"%link).get_a

  • kubernetes监控-prometheus+grafana完美监控

    监控方案cAdvisor+Heapster+InfluxDB+GrafanaY简单容器监控cAdvisor/exporter+Prometheus+GrafanaY扩展性好容器,应用,主机全方面监控Prometheus+Grafana是监控告警解决方案里的后起之秀通过各种exporter采集不同维度的监控指标,并通过Prometheus支持的数据格式暴露出来,Prometheus定期pull数据并用Grafana展示,异常情况使用AlertManager告警。通过cadvisor采集容器、Pod相关的性能指标数据,并通过暴露的/metrics接口用prometheus抓取通过prometheus-node-exporter采集主机的性能指标数据,并通过暴露的/metrics接口用prometheus抓取应用侧自己采集容器中进程主动暴露的指标数据(暴露指标的功能由应用自己实现,并添加平台侧约定的annotation,平台侧负责根据annotation实现通过Prometheus的抓取)通过kube-state-metrics采集k8s资源对象的状态指标数据,并通过暴露的/metrics接

  • 学界 | 基于Apache MXNet,亚马逊NMT开源框架Sockeye论文介绍

    选自arXiv作者:FelixHieber等机器之心编译参与:黄小天、李亚洲、刘晓坤今年7月份,作为MXNet的支持者,亚马逊开源了自己的NMT框架Sockeye。近日,亚马逊在arXiv放出了介绍Sockeye的论文,让我们能更细致的了解该开源工具的技术细节。机器之心对此论文做了摘要介绍,更多详细内容请查看原论文。过去两年深度学习革命为机器翻译带来了快速而巨大的变化。相较于基于短语的传统系统,基于神经网络的新模型可以持续地为用户提供更高质量的翻译。神经机器翻译(NMT)同时为研究者打开了一幅激动人心的新局面,其中训练通道已简化,统一的模型也可直接从数据中得到训练。这种打破统计机器翻译(SMT)限制的希望使社区大受鼓舞,使得近期工作几乎全部聚焦在NMT上,并且看起来似乎每几个月就会有新突破。在取得上述成果的同时,NMT也面临着一系列新挑战。尽管流行的编码器-解码器模型之简单令人心动,近期文献及共享评估任务的结果表明,为了同时在翻译质量与计算效率上取得「生产就绪」的性能,还需要做大量的工程学工作。在SMT的流行趋势中,即使最强大的NMT系统也受益于微妙的架构调整、超参数调节和实证上有效的

  • 工具| 手把手教你制作信息收集器之网站备案号

    本期任务: 1.掌握备案号的收集。 2.练习从http返回包中获取信息的能力。 3.所需工具:pip,http请求库:requests库,匹配库:re库、BeautifulSoup,json问题引入:1.何为网站备案号以及为什么收集它?答:备案号是网站是否合法注册经营的标志,一个网站的域名是需要去备案的。上一期我们教大家如何用搜索引擎收集网站的子域名,思路是从主域名下手,延伸下去获取尽可能多的子域名。而一家企业的网站资产中,远远不止有一个主域名,有很多隐藏的主域名我们未能发现,通过查询备案号能够得到更多的信息。2.去哪里收集备案号? 查备案号的地址有很多,比如收集百度备案号的地址:http://www.beianbeian.com/search/baidu.com http://www.sojson.com/api/beian/baidu.com http://icp.chinaz.com/info?q=baidu.com ......复制查到了备案号,比如是:京ICP证030173号,然后进行反查:http://www.beianbeian.com/search-1/京ICP证030

  • smali 介绍

    本篇介绍smali可以看成是虚拟机的汇编语言,在逆向时可以看懂smali可以提升不少效率.Smali语法数据类型Java和Smali的类型对应关系和jni类似,如下所示: 基本数据类型Smali数据类型Java数据类型VvoidZbooleanBbyteSshortCcharIintJlongFfloatDdouble对象类型Smali数据类型Java数据类型Lpackage/name/ObjectName;ObjectName[Iint[]Smali格式打开smali文件,头三行格式如下:.class<访问权限>[关键修饰字]<类名>; .super<父类名>; .source<源文件名>复制类的成员变量形式是:.filed<访问权限>[关键修饰字]<字段名>:<字段类型>复制函数的声明格式如下:.method<访问权限>[关键修饰字]<方法原型> <.locals><.registers>//函数中非参数的变量的多少 [.param]//方法参数 [.

  • 腾讯云腾讯云Mall退费说明

    腾讯云Mall属于消耗性服务产品,不支持5天内无理由全额退费,请仔细阅读以下说明并发起工单退费流程。退费说明单价和折扣按照最终生成的订单说明为准。参与活动购买的产品,如若退费规则与活动规则冲突,以活动规则为准,活动规则中若说明不支持退费,则无法申请退费。您同意,如出现异常/恶意退费情况,腾讯云有权拒绝退费申请。您认可腾讯云有权根据一般的、合理的认识对异常/恶意退费进行判断和识别。如您在退费时遇到问题,可通过在线咨询进行处理。退费金额退费金额计算:退费金额=支付金额-(已使用时长/总时长)×支付金额支付金额:订单实际支付金额(已进行折扣或代金券减免后的真实支付金额)。已使用时长:当前订单所购买服务已实际消耗的天数(不满24小时的按照一天计算)。总时长:当前订单所购买服务的总天数(1年按照365天计算)。说明抵扣或代金券不予以退还。退还金额将全部退还到腾讯云账号余额。未生效的订单,可全额退费。退费流程发起工单退费前,请先确定是否满足退费说明的条件,并确保基于腾讯云Mall服务产生的一切数据、资料已完成备份、迁移。若您未进行备份、迁移,在退费后产生的任何损失由您自行承担,与腾讯云无关。1.登

  • NFS服务的使用

    1.什么是NFS? NFS是NetworkFileSystem的缩写,即网络文件系统,相当于不同网段的内容共享。FTP:本网段文件内容共享。 客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下。 为什么需要安装NFS服务?当服务器访问流量过大时,需要多台服务器进行分流,而这多台服务器可以使用NFS服务进行共享。(NFS服务是最基础的共享服务)   主要由如下2个RPM包提供。 ①nfs-utils:包含NFS服务器端守护进程和NFS客户端相关工具。 ②rpcbind:提供RPC的端口映射的守护进程及其相关文档、执行文件等。 RPC与NFS如何通讯 因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。 2.规划节点 IP 主机名 节点

  • 分布式存储ceph理论

    一、ceph简介 Ceph是一种具有优秀性能,可靠性和可扩展性,统一的分布式文件系统。ceph的统一体现在可以提供文件系统、块存储和对象存储,分布式体现在可以动态扩展。在国内一些公司的云环境中,通常会采用ceph作为openstack的唯一后端存储来提高数据转发效率。Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。 官网:https://ceph.com/ 官方文档:http://docs.ceph.com/docs/master/# 二、ceph特点高性能 1.摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。2.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。3.能够支持上千个存储节点的规模,支持TB到PB级的数据。 高可用性:1.副本数可以灵活控制。2.支持故障域分隔,数据强一致性。3.多种故障场景自动进行修复自愈。4.没

  • 为了抓包某APP所做的尝试(to be continued)

      某APP,https通信,端口不是443,是一个非常用的端口。 准备工作:关于模拟器,试了好几个,总体来说,夜神模拟器比较好用,在官方的上面,APP直接不启动。 1、直接配置Burp和Fiddler代理。(失败) 没有抓到。这个APP经测试是不走代理的。因为,手机上安装APP之后,手机的设置里配置了代理,但是电脑上的Burp没打开,此时走代理的APP比如浏览器是不能上网的,但是这个APP不受影响。   2、使用Burp的一个插件NoPE。(失败) 这个工具的基本原理就是DNS劫持,通过DNS劫持的方式把APP的流量定向到配置好的代理上。代理可以是插件自己的TCP代理,也可以是用burp配置的代理(这个时候不是原来意义的代理了吧),因为是DNS劫持方式引流过来的流量,注意端口号也要配置的和APP要访问的端口号一样。 使用方法可参考:。 要注意的是:(1)内存。(2)服务器在本地,直接IP访问的情况。XXX 但是我使用这个工具不成功,可以成功的重定向DNS。但是代理上除了问题,Burp的代理至少是收到数据,但是貌似没有转发出去。插件自己的干脆没反应。  

  • Spark学习资料共享

    链接相关 课件代码:http://pan.baidu.com/s/1nvbkRSt 教学视频:http://pan.baidu.com/s/1c12XsIG 这是最近买的付费教程,对资料感兴趣的可以在下方留下邮件地址,我会定期进行密码发送。 课程简介 以目前主流的,最新的spark稳定版2.1.x为基础,深入浅出地介绍Spark生态系统原理及应用,内容包括Spark各组件(SparkCore/SQL/Streaming/MLlib)基本原理,使用方法,实战经验以及在线演示。本课程精心设计了五个企业级应用案例,帮助大家在理解理论的基础上,亲手实践和应用spark。 课程优化 讲述最新、最稳定的Spark2.1.X版本 精心设计5个企业级应用案例,更好地实践、应用Spark 面向人群 大数据爱好者 Spark初中级学者 对Spark感兴趣、想系统性学习者 学习收益 熟练使用Spark,理解Spark原理,熟知Spark内幕 掌握Spark2.1新增特性并熟练使用 用有丰富的Spark企业实战经验 课程大纲 第一部分:Spark概述 第一课:Spark2.1概述

  • java课程培训中心

    互联网时代,大家都被IT圈的前景和“钱”景诱惑着,有一些零基础的小白也想要进入这一行。没有基础但是想要跟上IT软件行业的发展步伐,选择Java培训班显然是一条有效途径。早几年,IT行业发展刚起步的时候,每一天都有无数家互联网企业诞生,对IT技术人才的需求规模巨大,学员从Java培训班毕业之后迅速被互联网企业以高薪抢走,开始了属于他们的IT职业生涯。几年过去,如今他们不仅是业内丰富经验的技术大佬,而且薪资早已翻番。   现在的IT圈虽然已经具备一定规模,但由于互联网的发展迅速,各大企业对于计算机人才依然是求贤若渴。那么计算机小白们应该如何入行呢?培训机构又该如何进行挑选呢?朗沃小编这就来告诉你。   1、对比课程设置,就职需求要契合 前端领域发展很快,各种新技术新思想不断涌现,但是互联网企业除了看求职者是否掌握新的技术知识点之外,对于应聘者的基本知识是否学扎实、学深是硬性要求。因此,大家在选择Web前端培训机构时,一定要用长远的、发展的眼光看,不要盲目听信培训机构吹嘘热门专业,多思考是否真正契合当下就职需求。 切记要对比课程设置,一看是否能在有限的时间里尽可能深入的学

  • 快速修改物理网卡地址

    0x00   运行-->regedit.exe   0x02 在电脑的“开始”菜单的“运行”中输入regedit.exe,打开注册表编辑器,展开注册表到: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}子键,在子键下的0000,0001, 0002等分支中查找DriverDesc,查看哪一个才是WLAN的网卡,如下图我的是802.11n       2、找到后进来,在0010子键下添加一个字符串,命名为“NetworkAddress”,键值为MAC地址即xxxxxx。然后在“0010”子键下的NDI\params中(如果没有params,请创建一个params子键)新建一项名为NetworkAddress的子键,在该子键下添加名为“default”的字符串,键值为MAC地址即xxxxxxxxx。在以上创建的NetworkAddress的子键下继续建立名为“ParamDesc”的字符串

  • memcached复制-repcached

    1.前言 由于memcached把数据都放到内存里,因此性能是极高的,正因为如此,不可避免会造成数据丢失,repcached就派上用场了,它可以实现memcached的主从复制 2.安装repcached 下面采用memcached和repcached一起安装的方式 $cdusr/local/src $wgethttps://downloads.sourceforge.net/project/repcached/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz $tar-zxvfmemcached-1.2.8-repcached-2.2.1.tar.gz $cdmemcached-1.2.8-repcached-2.2.1 $./configure--enable-replication--program-transform-name=s/memcached/repcached/ error:'IOV_MAX'undeclared(firstuseinthisfunction)#centos编译会报这个错,需要修

  • bat start 指定启动目录 运行命令

    记录下 start/d"%NGINX_BASE%"start-nginx.bat复制  

相关推荐

推荐阅读