加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[日常] Go语言圣经--复合数据类型,数组习题

发布时间:2020-12-16 19:36:00 所属栏目:大数据 来源:网络整理
导读:go 1. 2. 3. 4.slice go 1. 2. 3. 4.Printf 5. 4.1 4.2 1. func Sum256(data []byte) [Size]byte 2. godoc crypto //命令行标志 var hashMethod=flag.String("s","sha256","请输入哈希算法") func main(){ flag.Parse() num := compareSha256("x","X") fmt.P

go

1.

2.

3.

4.slice

go

1.

2.

3.

4.Printf

5.

4.1

4.2

1.

func Sum256(data []byte) [Size]byte

2. godoc crypto

//命令行标志
var hashMethod=flag.String("s","sha256","请输入哈希算法")
func main(){
flag.Parse()
num := compareSha256("x","X")
fmt.Println(num)

    //接收命令行flag,进行判断
    printHash(strings.ToUpper(*hashMethod),"x")

}
/
练习 4.1: 编写一个函数,计算两个SHA256哈希码中不同bit的数目。(参考2.6.2节的PopCount函数。)
/
func compareSha256(str1 string,str2 string)int{
a := sha256.Sum256([]byte(str1))
b := sha256.Sum256([]byte(str2))
num := 0
//循环字节数组
for i:=0;i<len(a);i++{
//1个字节8个bit,移位运算,获取每个bit
for m:=1;m<=8;m++{
//比较每个bit是否相同
if (a[i] >> uint(m))!=(b[i] >>uint(m)){
num++
}
}
}
return num
}
/
练习 4.2: 编写一个程序,默认情况下打印标准输入的SHA256编码,并支持通过命令行flag定制,输出SHA384或SHA512哈希算法。
/
func printHash(flag string,str string){
if flag=="SHA256"{
fmt.Printf("%xn",sha256.Sum256([]byte(str)))
return
}
if flag=="SHA512"{
fmt.Printf("%xn",sha512.Sum512([]byte(str)))
return
}
if flag=="SHA384"{
fmt.Printf("%xn",sha512.Sum384([]byte(str)))
return
}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读