当前位置: 首页 > news >正文

怎么用织梦做网站后台岗顶网站建设

怎么用织梦做网站后台,岗顶网站建设,沈阳做网站有名公司有哪些,嘉兴网站建设定制网站SHA(secure hashing algorithm)表示安全哈希算法.SHA是MD5的修正版本#xff0c;用于数据摘要和认证。哈希和加密类似#xff0c;唯一区别是哈希是单项的#xff0c;即哈希后的数据无法解密。SHA有不同的算法#xff0c;主要包括SHA-1, SHA-2, SHA-256, SHA-512, SHA-224, …SHA(secure hashing algorithm)表示安全哈希算法.SHA是MD5的修正版本用于数据摘要和认证。哈希和加密类似唯一区别是哈希是单项的即哈希后的数据无法解密。SHA有不同的算法主要包括SHA-1, SHA-2, SHA-256, SHA-512, SHA-224, and SHA-384等其中SHA-256是SHA-2家族的一个成员它把原数据转为256字节固定长度摘要信息SHA256的内部块大小为32位。本文介绍Golang如何使用sha256算法实现对配置文件的监控。 Golang hash256实现包 hash256包实现了FIPS 180-4规范中定义的SHA224、SHA256哈希算法。主要包括下面几个函数 func New() hash.Hash: 返回 hash.Hash用于计算SHA256哈希值。 func Sum256(data []byte) [Size]byte :返回计算SHA256的哈希值。 使用sha256.New() 下面示例使用New()函数返回Hash.hash: package mainimport (crypto/sha256fmt )func main() {h : sha256.New()h.Write([]byte(this is a password))// Calculate and print the hashfmt.Printf(%x, h.Sum(nil)) }过程很简单运行输出结果 289ca48885442b5480dd76df484e1f90867a2961493b7c60e542e84addce5d1e使用sha256.Sum256()函数 package mainimport (crypto/sha256fmt )func main() {sum : sha256.Sum256([]byte(this is a password))fmt.Printf(%x, sum) }更简洁输出结果一样。 下面示例展示两个字符串尽管只有一个字符微小差异但生成的hash却完全不同 package mainimport (crypto/sha256fmt )func main() {sum : sha256.Sum256([]byte(this is a password))sumCap : sha256.Sum256([]byte(This is a password))fmt.Printf(lowercase hash: %x, sum)fmt.Println()fmt.Printf(Capital hash: %x, sumCap) }运行输出结果 lowercase hash: 289ca48885442b5480dd76df484e1f90867a2961493b7c60e542e84addce5d1e Capital hash: 9ae12b1403d242c53b0ea80137de34856b3495c3c49670aa77c7ec99eadbba6e监控配置文件变化 我们需要观察文件是否变化标准实现使用time.Ticker每隔几秒重新计算配置文件的哈希值如果哈希值发生变化则重新加载。 获取配置hash值 func getCfgHash() string {file, err : os.Open(test.cfg)defer file.Close()if err ! nil {panic(err)}hash : sha256.New()if _, err : io.Copy(hash, file); err ! nil {panic(err)}sum : fmt.Sprintf(%x, hash.Sum(nil))return sum }上面方法步骤 打开配置文件从crypto/sha256创建hash.Hash对象解析文件内容到hash对象调用Sum方法获得hash值 上面示例中test测试文件可以随便输入一些内容生成文件hash值。 下面实现比较hash值方法 func compare(new string) bool {var oldStr oldFile, _ : os.Open(tmp.hash)oldBytes, _ : io.ReadAll(oldFile)oldStr string(oldBytes)oldFile.Close()if oldStr ! new {newFile, _ : os.Create(tmp.hash)fmt.Println(new hash:, new)newFile.WriteString(new)RefreshCfg()return false}return true }先加载上一次保存的配置文件hash值与本次传入最新hash值进行比较如不同则保存最新hash值用于下一次比较同时调用RefreshCfg()方法该方法是具体业务实现这里仅给出空实现 func RefreshCfg() {fmt.Println( refresh config information.) } 最后是main函数部分 func main() {// 先记录配置文件hash值cfgHash : getCfgHash()fmt.Println(cfg hash:, cfgHash)file, _ : os.Create(tmp.hash)file.WriteString(cfgHash)file.Close()// define an interval and the ticker for this intervalinterval : time.Duration(2) * time.Second// create a new Tickertk : time.NewTicker(interval)// start the ticker by constructing a loopfor range tk.C {fmt.Println(time running...)loadStr : getCfgHash()if !compare(loadStr) {fmt.Println(config file has changed...)}} }首先保存当前配置文件的Hash值。然后利用Ticker每2秒比较一次比较。运行程序修改配置文件可以立刻看到程序监控到变化并调用RefreshCfg方法。 下面给出完整代码实现 package mainimport (crypto/sha256timefmtioos )func main() {// 先记录配置文件hash值cfgHash : getCfgHash()fmt.Println(cfg hash:, cfgHash)file, _ : os.Create(tmp.hash)file.WriteString(cfgHash)file.Close()// define an interval and the ticker for this intervalinterval : time.Duration(2) * time.Second// create a new Tickertk : time.NewTicker(interval)// start the ticker by constructing a loopfor range tk.C {fmt.Println(time running...)loadStr : getCfgHash()if !compare(loadStr) {fmt.Println(config file has changed...)}} }func RefreshCfg() {fmt.Println( refresh config information.) }func getCfgHash() string {file, err : os.Open(test.cfg)defer file.Close()if err ! nil {panic(err)}hash : sha256.New()if _, err : io.Copy(hash, file); err ! nil {panic(err)}sum : fmt.Sprintf(%x, hash.Sum(nil))return sum }func compare(new string) bool {var oldStr oldFile, _ : os.Open(tmp.hash)oldBytes, _ : io.ReadAll(oldFile)oldStr string(oldBytes)oldFile.Close()if oldStr ! new {newFile, _ : os.Create(tmp.hash)fmt.Println(new hash:, new)newFile.WriteString(new)RefreshCfg()return false}return true }总结 数据加密算法规范非常复杂在大多数应用场景中需要广泛研究。但Golang提供了专门的库实现了许多流行的加密算法。本文演示了如何使用crypto/sha256对配置文件进行监控变化则重新加载配置文件。
http://www.hkea.cn/news/14305306/

相关文章:

  • 网站开发networdpress nginx php
  • 建设厅网站打不开wordpress 头像不见
  • dns网站建设WordPress主题如何更新
  • 空壳网站主体注销wordpress设置 文件
  • idc自动续费网站源码西宁微信网站建设需要多少钱
  • 长沙企业关键词优化哪家好谷歌seo推广服务
  • 四川省广安建设局网站一个好网站
  • 微商城网站建设方案做药品的电商网站
  • seo网站优化培训开发网站多少钱
  • 婚庆网站开发要达到的目标装网要多少钱
  • 郑州恩恩网站建设网站域名不备案要证书有啥用
  • 湟中县公司网站建设建设网站计划书
  • 平台网站怎么做的外贸网站谷歌优化
  • 初学者求教怎样做网站wordpress彩色标签云插件
  • 上海opencart网站建设wordpress多条件过滤
  • 大连专业手机自适应网站制作上海提供虚拟注册地址的园区
  • 信用网站建设内容公司画册
  • 网站设计建设合同html网页制作企业类网站
  • wordpress个人博客模板下载台州优化排名推广
  • 大型集团网站免费模板网站都有什么
  • 加强校园网站建设方案下列选项哪些是网络营销的特点
  • 元典科技网站建设泸州网站制作
  • 网站建设所用的工具十大高端全屋定制
  • 中国联通网站建设与维护百度上做网站
  • 医联体网站建设集团高端网站
  • 网站设计软件培训怎么样设计素材类网站开发策划书
  • 网站建设注意哪些内容新闻营销
  • 一流的龙岗网站建设网站添加漂浮二维码怎么做
  • 网站建设与运营公司主营业务收入与成本如何提高网站的访问量
  • 苏州有哪些做网站公司好wordpress资源下载类模板